0.前言
该系列是宇树机器狗go2的gazebo仿真系列的分支系列,在使用宇树机器狗go2进行仿真的时候经常会遇到因为go2平衡控制器导致的算法部署和验证的失败,这极大的影响了我们的算法验证和部署工作,而使用小车进行算法的部署和验证可以极大的避免因为平衡控制器问题导致的掉头发和情绪影响(算是拿我的无人驾驶课设过来进行的二次利用了)。
尽管小车算法验证仿真平台属于go2的分支系列,但我还是希望能有更多的开发者加入近来一起完成机器狗go2和小车的仿真实验项目的建设,如有更好的方案和建议可以私聊或申请共创作者,小车算法验证系列不属于我的毕业设计的部分,因此在网站上的更新频率相对会更高一点,但小车算法验证仿真平台系列的完整性会差很多。
1.安装依赖
声明:本次使用的是ubuntu 20.04 + ros1 noetic
sudo apt install ros-noetic-joint-state-publisher-gui
sudo apt install ros-noetic-ros-control
sudo apt install ros-noetic-ros-controllers
sudo apt install ros-noetic-ackermann-msgs
sudo apt install ros-noetic-gmapping
sudo apt install ros-noetic-gmapping
sudo apt install ros-noetic-teb-local-planner
sudo apt install ros-noetic-map-server
sudo apt-get install ros-noetic-octomap-ros
sudo apt-get install ros-noetic-octomap-msgs
sudo apt-get install ros-noetic-octomap-server
sudo apt-get install ros-noetic-octomap-rviz-plugins
下面是更改好的小车平台,相对来说简单易上手: 小车平台
2.Readme
本小车使用github上的一个阿克曼小车仿真更改过来的。
1.获取功能包
mkdir -p car_ws/src
cd car_ws/src
git clone
cd ..
catkin_make
编译完成后就可以使用了,模型树状图如下,配备了一个深度相机,一个单目相机,一个2d雷达(模型文件里面启动就好,我屏蔽了),一个imu,一个velodyne vlp16雷达惯导平台。
暂时无法在飞书文档外展示此内容 下面是启动小车仿真后的tf树:
2.racebot_description
racebot_description中的小车控制使用的是后驱
# rviz模型展示
roslaunch racebot_description tianracer_rviz.launch
# gazebo演示
roslaunch racebot_description racecar_gazebo.launch
#键盘控制
rosrun racebot_description teleop_racebot.py
3.racebot_gazebo
racebot_gazebo中的小车采用的是四驱
#仿真加键盘
roslaunch racebot_gazebo tianracer.launch
3.3dslam加octomap
这里用里程计和camera_init做了静态映射,并使用odom作为八叉树地图的frame_id,这样就可以一边构建3dslam地图一边构建八叉树地图,而且构建八叉树地图的时候也是在构建2d栅格地图,使用该方法进行仿真建图对电脑的性能需求更高一点,在电脑性能不是很足的时候更推荐单独使用octomap进行建图(同样的使用里程计作为frame_id,效果是差不多的,这样甚至可以免除开启gmapping的烦恼),也可以使用FAST_LIO_LOCALIZATION重定位来进行frame_id的选取。
<launch>
<node pkg="octomap_server" type="octomap_server_node" name="octomap_server">
<!-- resolution in meters per pixel -->
<param name="resolution" value="0.1" />
<!-- name of the fixed frame, needs to be "/map" for SLAM -->
<param name="frame_id" type="string" value="odom" />
<!-- max range / depth resolution of the kinect in meter -->
<param name="sensor_model/max_range" value="1000.0" />
<param name="latch" value="true" />
<!-- max/min height for occupancy map, should be in meters -->
<param name="pointcloud_max_z" value="3" />
<param name="pointcloud_min_z" value="0" />
<!-- topic from where pointcloud2 messages are subscribed -->
<remap from="/cloud_in" to="/velodyne_points" />
</node>
<!-- 发布一个雷达body到机器人足端body_foot的静态映射 -->
<!--<node pkg="tf2_ros" type="static_transform_publisher" name="tf_pub_1" args="-0.10 -0.11 0 0 0 0 base_link base_footprint" />-->
<!-- 发布一个雷达初始位置camera_init到odom的静态映射 -->
<node pkg="tf2_ros" type="static_transform_publisher" name="tf_pub_2" args="0 0 0 0 0 0 camera_init odom" />
4.gmapping加octomap
点击小车算法验证仿真平台(1)八叉树地图构建和重定位查看全文