ICRA Robomaster Sim2Real Challenge Client Baseline-简洁翻译版

硬件-EP

RoboMaster EP

  • 4-axis palletizing robot arm,四轴机械臂?
  • 可灵活夹取的环形爪
  • 麦克纳姆轮,全向移动
  • 快速无线数据连接:实时视频流,开放的SDK(Software Development Kit)(软件开发工具包)
  • external computing platform:NUC(迷你主机)
    Model:NUC11PAHI7
    CPU:i7-1165G7 (2.8GHz, 8 Cores)
    RAM:8GB
    SSD:256GB
  • onboard lidar(机载激光雷达)
  • RGB-D cameras(彩色深度相机)(获得彩色图+深度图)

软件架构-模拟

架构

Core (核心)(ROS Master)

ROS系统中的通信中心

Server(服务端)

在阶段1,任务是在模拟场景中执行的
habitat-simhabitat-lab构造了在实际测试场景中的数字孪生
这个数字孪生容器包括了测试场景和EP的模拟
ServerClient的通信接口是ROS topics

Client(客户端)

在本仓库中,为这个任务提供了一个基本的方法。
一个功能镜像可以通过搭建镜像或者是拉取镜像tb5zhh/icra-2023-client:latest来获得
注意,由于硬件资源约束,一个启动的客户端应该限制使用不超过6个CPU和8192MB内存
这个约束在launch.sh通过参数--cpus=5.6 -m 8192M强加上去了,在开发中不要移除!否则在实际测试中的表现远不如本地测试。
这个兜底镜像(或者是你搭建的镜像)要以基础镜像docker.discover-lab.com:55555/rm-sim2real/client-base:v1.4.0为基础。
这个基础镜像包括了基本的功能包(例如,键盘控制)。参考this repo获得关于这个基础镜像的更多信息。

怎么做

启动服务端和客户端

launch.sh启动脚本会按顺序创建docker网络通信核心服务端客户端

scripts/launch.sh

可以通过指定环境变量SERVER_IMAGECLIENT_IMAGE来改变镜像

# 假设客户端为client-test:latest
CLIENT_IMAGE=client-test:latest scripts/launch.sh

在你启动你本地搭建的客户端的时候这会很有用

通常情况下,如果启动成功,会有3个image-view窗口和1个cartographer窗口在屏幕上显示

iamge-view

cartographer

启动服务端且创建不运行的客户端容器

启动模拟服务端然后创建不自动运行比赛动作的客户端容器,用额外的开始点执行launch.sh
在调试启动客户端前的部分的时候很有用

scripts/launch.sh bash

显示在屏幕的可视化内容与上面的部分的结果应该是一致的(因为服务端也同样地启动了

终止服务端和客户端

下面的脚本会立刻终止所有运行中的容器并且移除创建的网络

scripts/halt.sh

为客户端创建一个shell

在客户端打开一个shell

scripts/shell.sh

默认的ROS命令可以直接用(不需要source setup.bash
在运行中的容器里的任何修改都不会保存(也就是说,建议使用仅仅使用shell来调试
需要修改保存请使用docker build

在客户端执行命令

shell.sh接受命令作为参数,例如

scripts/shell.sh rostopic list -v

用键盘手动控制EP

scripts/kbd_control.sh来手动控制EP

scripts/kbd_control.sh

控制说明:
i:向前移动
,:向后移动
j:逆时针旋转
l:顺时针旋转
J:水平向左移动
L:水平向右移动
k:停止移动
q:提高机器人速度
z:降低机器人速度
1:降低机器臂
2:升高机器臂
3:关闭机械爪
4:打开机械爪
Ctrl+C :停止接收键盘输入

显示放置矿石的计时器

judging.sh调用rostopic echo用来在屏幕打印ROS话题/judgement/markers_time

scripts/judging.sh

设置矿石的位置

提供了ROS接口用于在虚拟环境中手动放置矿石。默认地,矿石会通过与RM Sim2Real 2022
同样的方式安放。
用于放置矿石在随机生成的位置上:

docker exec -it client /opt/ros/noetic/env.sh /opt/workspace/devel_isolated/env.sh /opt/ep_ws/devel/env.sh rostopic pub -1 /reset geometry_msgs/Point "x: 0.0
y: 0.0
z: 0.0"

x,y,z的值代表矿石的数字标签会被交换。(???)
如果x,y,z的值不在1-5之间或者是相同的话, 那么它们就会随机放置

随机放置

用于手动放置矿石在指定的位置:(PoseArray应该有5个条目)

docker exec -it client /opt/ros/noetic/env.sh /opt/workspace/devel_isolated/env.sh /opt/ep_ws/devel/env.sh rostopic pub -1 /pose_set geometry_msgs/PoseArray "header:
  seq: 0
  stamp:
    secs: 0
    nsecs: 0
  frame_id: ''
poses:
- position:
    x: 3.0
    y: 0.0
    z: 3.0
  orientation:
    x: 0.0
    y: 0.0
    z: 0.0
    w: 1.0
- position:
    x: 3.0
    y: 0.0
    z: 3.15
  orientation:
    x: 0.0
    y: 0.0
    z: 0.0
    w: 1.0
- position:
    x: 3.0
    y: 0.0
    z: 3.3
  orientation:
    x: 0.0
    y: 0.0
    z: 0.0
    w: 1.0
- position:
    x: 3.0
    y: 0.0
    z: 3.45
  orientation:
    x: 0.0
    y: 0.0
    z: 0.0
    w: 1.0
- position:
    x: 3.0
    y: 0.0
    z: 3.6
  orientation:
    x: 0.0
    y: 0.0
    z: 0.0
    w: 1.0

"

如果poses的数量少于5个或者是pose无效的,这个pose会设置成随机的数值


特定的放置

用Visual Studio Code来调试

安装一个vscode的插件来远程开发docker容器 (ms-vscode-remote.remote-containers):

插件

点击左下角的远程开发按钮然后选择Attach to Running Container
选择Attach to Runing Container

然后选择正在运行的客户端容器(也就是/client)然后打开文件夹/opt/ep_ws/src。现在你应该可以直接修改在容器中的文件。
注意:通过这种方式进行的任何修改都不会持续地生效。一旦容器被终止并移除,所作的修改会丢失。建议用只用shell进行调试,并用docker build来实现持续生效的修改

搭建一个更新后的客户端镜像

本仓库包含了一个Dockerfile。为了搭建一个新的客户端镜像,执行:

# Build with name `client-custom` and tag `latest`
docker build . -t client-custom:latest

默认地,用于控制的代码位于src/(在本仓库的src/)。当搭建一个新的客户端镜像后,所有在src/的代码会被复制到镜像中的/opt/ep_ws/src/rmus_solution

在镜像中,/opt/ep_ws是ROS的工作空间目录,之后在dockerfile中,在这个目录下执行catkin_make

客户端的入口固定在此仓库根目录下的start.sh。当这个新的客户端镜像搭建时,这个脚本拷贝到/opt/start.sh且作为作主要入口为客户端服务。这个文件的内容可以根据需求任意改动,但这个脚本(start.sh)的名称不能修改

如果新的镜像需要额外的apt和pip功能包,请修改Dockerfile来在编译时获得这些功能包。
请修改这几行来添加更多的apt依赖:

# 用apt安装额外的依赖
RUN apt-get update && \
     apt-get install -y --no-install-recommends \
     ros-noetic-depthimage-to-laserscan ros-noetic-map-server python3-tf-conversions ros-noetic-global-planner && \
     rm -rf /var/lib/apt/lists/* && apt-get clean

请修改这几行来添加更多的pip依赖:

# 用pip安装额外的依赖
RUN pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple scipy

提交镜像

提交镜像需要报名ICRA Robomaster Sim2Real challenges,在继续进行前请先注册
如果你想要为了线上测试而提交的话,请先给提交的镜像打标签:

# 假设你的镜像有名称client-custom和标签latest
docker tag client-custom:latest docker.discover-lab.com:55555/[username]/client:[tag]

在注册的时候用你的用户名替换username,用你喜欢的标签替换tag
注意,名称不是client的镜像会被线上测试系统忽略。

在这之后,推送你的镜像到登记处。

docker push docker.discover-lab.com:55555/[username]/client:[tag]

你可以在这里找到镜像的测试结果。

从服务端/客户端容器拷贝文件,拷贝文件到服务端/客户端容器

你可以参考这个页面来实现在宿主机和容器之间的文件拷贝。
通常,当你需要更新容器里的资源,那么你需要修改在本仓库的源代码然后参考这个页面来搭建一个更新后的镜像。直接拷贝文件进容器中只能在调试时这么干。

例程

为了启动baseline的作为独立组件的例程,请参考routines.md

参考

参考reference.md

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,088评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,715评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,361评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,099评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 60,987评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,063评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,486评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,175评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,440评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,518评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,305评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,190评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,550评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,880评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,152评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,451评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,637评论 2 335

推荐阅读更多精彩内容