很久没有更新博客,学习任务比较繁重,时间过得很快,总想每日一更,可是现在太忙了,借着交作业的机会,顺便更新一篇实践博客,具体原理有机会深究…
本博客参考张老师教程,博主为张博公选课学生,根据张博教程自主搭建机器人并仿真!
对原理理解并不深刻,如需学习只是还请参考张博的博客!
ROS2机器人和Gazebo 9仿真实践
alvin@ros:~$ source /opt/ros/dashing/setup.bash
alvin@ros:~$ echo $ROS_DISTRO
dashing
mkdir -p mobot/src
cd mobot/src/
ros2 pkg create --build-type ament_cmake mobot
world
alvin@ros:~/mobot/src/mobot$ mkdir worlds
alvin@ros:~/mobot/src/mobot$ cd worlds/
alvin@ros:~/mobot/src/mobot/worlds$ touch mobot_room.world
alvin@ros:~/mobot/src/mobot/worlds$ gedit mobot_room.world
打开后输入内容:
mobot_room.world-ROS2Gazebo9附1
sudo apt install ros-dashing-gazebo-*
ros2 pkg list
$ cd ~/mobot/src/mobot
$ mkdir urdf
$ cd urdf
$ touch mobot.gazebo
$ gedit mobot.gazebo
打开后输入内容:
mobot模型-ROS2Gazebo9附2(mobot.gazebo部分)
$ cd urdf
$ touch mobot.urdf.xacro
$ gedit mobot.urdf.xacro
打开后输入内容:
mobot模型-ROS2Gazebo9附2(mobot.urdf.xacro部分)
CMakeLists
文件$ source /opt/ros/dashing/setup.bash
$ cd ~/mobot
$ colcon build
alvin@ros:~$ cd mobot/src/mobot/
alvin@ros:~/mobot/src/mobot$ gedit CMakeLists.txt
打开后输入内容:
CMakeLists部分-ROS2Gazebo9附3
$ cd mobot/src/mobot
$ mkdir launch
$ cd launch
$ touch world.launch.py
$ gedit world.launch.py
打开后输入内容:
world.launch.py部分-ROS2Gazebo9附4
$ source install/setup.bash
$ ros2 launch mobot world.launch.py
重新打开一个终端:
alvin@ros:~/mobot$ source /opt/ros/dashing/setup.bash
alvin@ros:~/mobot$ ros2 run teleop_twist_keyboard teleop_twist_keyboard --ros-args -r __ns:=/mobot
Rviz2三维可视化工具,主要用于数据可视化,不同于Gazebo三维机器人仿真工具。
运行指令
rviz2
打印激光扫描仪数据:
打印图像数据:
很明显,这样的数据诗人头大,可视化并不强
因此我们用到一个可视化的工具:RViz
激光扫描仪的值显示的是error,报错信息是无法将家人的坐标转换到地图上来;
这时候我们需要调整它的固定坐标系
如图所示,激光传感器的数据就可以通过可视化的方式显示出来
我们在gazebo仿真环境里面加入一个额外的物体,RViz下的激光传感器的可视化图像是否会有改变呢?但暗示肯定的!
很明显,物块被激光扫描仪扫描出了起轮廓信息,但怎么确认一下呢?毕竟眼见为实!!!
我们可以将摄像头的图像信息传进来
同时选取不同轴,扫描出来会有不同的颜色: