ROS机器人小车建模仿真与SLAM

一、在ROS中完成一个机器小车的模型创建,传感器配置,仿真环境的设置,并控制机器小车进行运动。

1.在 Rviz 中显示一个机器小车

1.1 准备:新建功能包,导入依赖

创建一个新的功能包,名称自定义,导入依赖包:urdfxacro
alt
在当前功能包下,再新建几个目录:

urdf: 存储 urdf 文件的目录

meshes:机器人模型渲染文件(暂不使用)

config: 配置文件

launch: 存储 launch 启动文件
alt

1.2 核心:编写 urdf 文件

box_urdf.urdf

<!-- <robot name="mycar">
    <link name="base_link">
        <visual>
            <geometry>
                <box size="0.5 0.2 0.1" />
            </geometry>
        </visual>
    </link>
</robot> -->
 
 
 
<robot name="mycar">
  <!-- 设置 base_footprint  -->
  <link name="base_footprint">
    <visual>
      <geometry>
        <sphere radius="0.001" />
      </geometry>
    </visual>
  </link>
 

  <link name="base_link">
    <visual>
      <geometry>
        <cylinder radius="0.1" length="0.08" />
      </geometry>
      <origin xyz="0 0 0" rpy="0 0 0" />
      <material name="yellow">
        <color rgba="0.8 0.3 0.1 0.5" />
      </material>
    </visual>
  </link>
 
  <joint name="base_link2base_footprint" type="fixed">
    <parent link="base_footprint" />
    <child link="base_link"/>
    <origin xyz="0 0 0.055" />
  </joint>
 

  <link name="left_wheel">
    <visual>
      <geometry>
        <cylinder radius="0.0325" length="0.015" />
      </geometry>
      <origin xyz="0 0 0" rpy="1.5705 0 0" />
      <material name="black">
        <color rgba="0.0 0.0 0.0 1.0" />
      </material>
    </visual>
 
  </link>
 
  <joint name="left_wheel2base_link" type="continuous">
    <parent link="base_link" />
    <child link="left_wheel" />
    <origin xyz="0 0.1 -0.0225" />
    <axis xyz="0 1 0" />
  </joint>
 
 
  <link name="right_wheel">
    <visual>
      <geometry>
        <cylinder radius="0.0325" length="0.015" />
      </geometry>
      <origin xyz="0 0 0" rpy="1.5705 0 0" />
      <material name="black">
        <color rgba="0.0 0.0 0.0 1.0" />
      </material>
    </visual>
 
  </link>
 
  <joint name="right_wheel2base_link" type="continuous">
    <parent link="base_link" />
    <child link="right_wheel" />
    <origin xyz="0 -0.1 -0.0225" />
    <axis xyz="0 1 0" />
 
  </joint>
 

  <link name="front_wheel">
    <visual>
      <geometry>
        <sphere radius="0.0075" />
      </geometry>
      <origin xyz="0 0 0" rpy="0 0 0" />
      <material name="black">
        <color rgba="0.0 0.0 0.0 1.0" />
      </material>
    </visual>
  </link>
 
  <joint name="front_wheel2base_link" type="continuous">
    <parent link="base_link" />
    <child link="front_wheel" />
    <origin xyz="0.0925 0 -0.0475" />
    <axis xyz="1 1 1" />
  </joint>
 
  <link name="back_wheel">
    <visual>
      <geometry>
        <sphere radius="0.0075" />
      </geometry>
      <origin xyz="0 0 0" rpy="0 0 0" />
      <material name="black">
        <color rgba="0.0 0.0 0.0 1.0" />
      </material>
    </visual>
  </link>
 
  <joint name="back_wheel2base_link" type="continuous">
    <parent link="base_link" />
    <child link="back_wheel" />
    <origin xyz="-0.0925 0 -0.0475" />
    <axis xyz="1 1 1" />
  </joint>
</robot>
 

1.3 核心:在 launch 文件集成 URDF 与 Rviz

box_launch.launch

<launch>
 
  <!-- 将 urdf 文件内容设置进参数服务器 -->
  <param name="robot_description" textfile="$(find jubot_demo)/urdf/box_urdf.urdf" />
 
  <!-- 启动 rviz -->
  <!-- <node pkg="rviz" type="rviz" name="rviz" /> -->
  <node pkg="rviz" type="rviz" name="rviz" args="-d $(find jubot_demo)/config/rviz/show_four_wheel_car.rviz" />
 
  <!-- 启动机器人状态和关节状态发布节点 -->
  <node pkg="robot_state_publisher" type="robot_state_publisher" name="robot_state_publisher" />
  <node pkg="joint_state_publisher" type="joint_state_publisher" name="joint_state_publisher" />
 
  <!-- 启动图形化的控制关节运动节点 -->
  <node pkg="joint_state_publisher_gui" type="joint_state_publisher_gui" name="joint_state_publisher_gui" />
 
 
</launch>

1.4 在 Rviz 中显示机器小车模型

安装一个检查urdf语法的工具

sudo apt-get install liburdfdom-tools

在urdf文件夹下打开终端检查语法

check_urdf box_urdf.urdf

alt
在urdf文件夹下打开终端,图形化显示URDF模型

urdf_to_graphiz box_urdf.urdf

alt
alt
退到主目录catkin_ws下,执行catkin_make
alt
执行成功之后,再执行catkin_make install
alt
在主目录catkin_make下配置环境变量source devel/setup.bash

检测环境变量是否配置成功echo $ROS_PACKAGE_PATH
alt
启动launch文件

roslaunch jubot_demo box_launch.launch

alt

2.添加摄像头雷达传感器

2.1URDF优化xacro

在urdf文件夹中新建一个xacro文件夹,并在xacro文件夹中新建my_base.urdf.xacro文件

<robot name="my_base" xmlns:xacro="http://www.ros.org/wiki/xacro">
    <xacro:property name="PI" value="3.141"/>
    
    <material name="black">
        <color rgba="0.0 0.0 0.0 1.0" />
    </material>
    <xacro:property name="base_footprint_radius" value="0.001" /> <!-- base_footprint 半径  -->
    <xacro:property name="base_link_radius" value="0.1" /> 
    <xacro:property name="base_link_length" value="0.08" />
    <xacro:property name="earth_space" value="0.015" /> 
    <link name="base_footprint">
      <visual>
        <geometry>
          <sphere radius="${base_footprint_radius}" />
        </geometry>
      </visual>
    </link>
 
    <link name="base_link">
      <visual>
        <geometry>
          <cylinder radius="${base_link_radius}" length="${base_link_length}" />
        </geometry>
        <origin xyz="0 0 0" rpy="0 0 0" />
        <material name="yellow">
          <color rgba="0.5 0.3 0.0 0.5" />
        </material>
      </visual>
    </link>
 
    <joint name="base_link2base_footprint" type="fixed">
      <parent link="base_footprint" />
      <child link="base_link" />
      <origin xyz="0 0 ${earth_space + base_link_length / 2 }" />
    </joint>
 

    <xacro:property name="wheel_radius" value="0.0325" />
    <xacro:property name="wheel_length" value="0.015" />
    
    <xacro:macro name="add_wheels" params="name flag">
      <link name="${name}_wheel">
        <visual>
          <geometry>
            <cylinder radius="${wheel_radius}" length="${wheel_length}" />
          </geometry>
          <origin xyz="0.0 0.0 0.0" rpy="${PI / 2} 0.0 0.0" />
          <material name="black" />
        </visual>
      </link>
 
      <joint name="${name}_wheel2base_link" type="continuous">
        <parent link="base_link" />
        <child link="${name}_wheel" />
        <origin xyz="0 ${flag * base_link_radius} ${-(earth_space + base_link_length / 2 - wheel_radius) }" />
        <axis xyz="0 1 0" />
      </joint>
    </xacro:macro>
    <xacro:add_wheels name="left" flag="1" />
    <xacro:add_wheels name="right" flag="-1" />

    <xacro:property name="support_wheel_radius" value="0.0075" /> 
 
  
    <xacro:macro name="add_support_wheel" params="name flag" >
      <link name="${name}_wheel">
        <visual>
            <geometry>
                <sphere radius="${support_wheel_radius}" />
            </geometry>
            <origin xyz="0 0 0" rpy="0 0 0" />
            <material name="black" />
        </visual>
      </link>
 
      <joint name="${name}_wheel2base_link" type="continuous">
          <parent link="base_link" />
          <child link="${name}_wheel" />
          <origin xyz="${flag * (base_link_radius - support_wheel_radius)} 0 ${-(base_link_length / 2 + earth_space / 2)}" />
          <axis xyz="1 1 1" />
      </joint>
    </xacro:macro>
 
    <xacro:add_support_wheel name="front" flag="1" />
    <xacro:add_support_wheel name="back" flag="-1" />
 
</robot>
 

2.2集成launch文件

在 launch 文件中直接加载 xacro
box_launch:

<launch>
 
  <!-- 将 urdf 文件内容设置进参数服务器 -->
  <!-- <param name="robot_description" textfile="$(find jubot_demo)/urdf/box_urdf.urdf" /> -->
 
  <!-- 使用xacro优化urdf文件 -->
  <param name="robot_description" command="$(find xacro)/xacro $(find jubot_demo)/urdf/xacro/my_base.urdf.xacro" />
 
  <!-- 启动 rviz -->
  <!-- <node pkg="rviz" type="rviz" name="rviz" /> -->
  <node pkg="rviz" type="rviz" name="rviz" args="-d $(find jubot_demo)/config/rviz/show_four_wheel_car.rviz" />
 
  <!-- 启动机器人状态和关节状态发布节点 -->
  <node pkg="robot_state_publisher" type="robot_state_publisher" name="robot_state_publisher" />
  <node pkg="joint_state_publisher" type="joint_state_publisher" name="joint_state_publisher" />
 
  <!-- 启动图形化的控制关节运动节点 -->
  <node pkg="joint_state_publisher_gui" type="joint_state_publisher_gui" name="joint_state_publisher_gui" />
 
 
</launch>

加载robot_description时使用command属性,属性值就是调用 xacro 功能包的 xacro 程序直接解析 xacro 文件。
启动launch:

roslaunch jubot_demo box_launch.launch

alt

2.3 添加摄像头和雷达传感器

在xacro文件夹中新建“my_camera.urdf.xacro”"“my_car_camera.urdf.xacro”“my_laser.urdf.xacro”文件
my_camera.urdf.xacro:

<!-- 摄像头相关的 xacro 文件 -->
<robot name="my_camera" xmlns:xacro="http://wiki.ros.org/xacro">
    <!-- 摄像头属性 -->
    <xacro:property name="camera_length" value="0.01" /> <!-- 摄像头长度(x) -->
    <xacro:property name="camera_width" value="0.025" /> <!-- 摄像头宽度(y) -->
    <xacro:property name="camera_height" value="0.025" /> <!-- 摄像头高度(z) -->
    <xacro:property name="camera_x" value="0.08" /> <!-- 摄像头安装的x坐标 -->
    <xacro:property name="camera_y" value="0.0" /> <!-- 摄像头安装的y坐标 -->
    <xacro:property name="camera_z" value="${base_link_length / 2 + camera_height / 2}" /> <!-- 摄像头安装的z坐标:底盘高度 / 2 + 摄像头高度 / 2  -->
 
    <!-- 摄像头关节以及link -->
    <link name="camera">
        <visual>
            <geometry>
                <box size="${camera_length} ${camera_width} ${camera_height}" />
            </geometry>
            <origin xyz="0.0 0.0 0.0" rpy="0.0 0.0 0.0" />
            <material name="black" />
        </visual>
    </link>
 
    <joint name="camera2base_link" type="fixed">
        <parent link="base_link" />
        <child link="camera" />
        <origin xyz="${camera_x} ${camera_y} ${camera_z}" />
    </joint>
</robot>
 

my_laser.urdf.xacro:

<!--
    小车底盘添加雷达
-->
<robot name="my_laser" xmlns:xacro="http://wiki.ros.org/xacro">

    <!-- 雷达支架 -->
    <xacro:property name="support_length" value="0.15" /> <!-- 支架长度 -->
    <xacro:property name="support_radius" value="0.01" /> <!-- 支架半径 -->
    <xacro:property name="support_x" value="0.0" /> <!-- 支架安装的x坐标 -->
    <xacro:property name="support_y" value="0.0" /> <!-- 支架安装的y坐标 -->
    <xacro:property name="support_z" value="${base_link_length / 2 + support_length / 2}" /> <!-- 支架安装的z坐标:底盘高度 / 2 + 支架高度 / 2  -->

    <link name="support">
        <visual>
            <geometry>
                <cylinder radius="${support_radius}" length="${support_length}" />
            </geometry>
            <origin xyz="0.0 0.0 0.0" rpy="0.0 0.0 0.0" />
            <material name="red">
                <color rgba="0.8 0.2 0.0 0.8" />
            </material>
        </visual>
    </link>

    <joint name="support2base_link" type="fixed">
        <parent link="base_link" />
        <child link="support" />
        <origin xyz="${support_x} ${support_y} ${support_z}" />
    </joint>


    <!-- 雷达属性 -->
    <xacro:property name="laser_length" value="0.05" /> <!-- 雷达长度 -->
    <xacro:property name="laser_radius" value="0.03" /> <!-- 雷达半径 -->
    <xacro:property name="laser_x" value="0.0" /> <!-- 雷达安装的x坐标 -->
    <xacro:property name="laser_y" value="0.0" /> <!-- 雷达安装的y坐标 -->
    <xacro:property name="laser_z" value="${support_length / 2 + laser_length / 2}" /> <!-- 雷达安装的z坐标:支架高度 / 2 + 雷达高度 / 2  -->

    <!-- 雷达关节以及link -->
    <link name="laser">
        <visual>
            <geometry>
                <cylinder radius="${laser_radius}" length="${laser_length}" />
            </geometry>
            <origin xyz="0.0 0.0 0.0" rpy="0.0 0.0 0.0" />
            <material name="black" />
        </visual>
    </link>

    <joint name="laser2support" type="fixed">
        <parent link="support" />
        <child link="laser" />
        <origin xyz="${laser_x} ${laser_y} ${laser_z}" />
    </joint>
</robot>


 

my_car_camer.urdf.xacro:

<!-- 组合小车底盘与摄像头与雷达 -->
<robot name="my_car_camera" xmlns:xacro="http://wiki.ros.org/xacro">
    <xacro:include filename="my_base.urdf.xacro" />
    <xacro:include filename="my_camera.urdf.xacro" />
    <xacro:include filename="my_laser.urdf.xacro" />
</robot>
 

2.3修改launch文件

<launch>
 
  <!-- 将 urdf 文件内容设置进参数服务器 -->
  <!-- <param name="robot_description" textfile="$(find jubot_demo)/urdf/box_urdf.urdf" /> -->
 
  <!-- 使用xacro优化urdf文件 -->
  <!-- <param name="robot_description" command="$(find xacro)/xacro $(find jubot_demo)/urdf/xacro/my_base.urdf.xacro" /> -->
    <param name="robot_description" command="$(find xacro)/xacro $(find jubot_demo)/urdf/xacro/my_car_camera.urdf.xacro" />
 
  <!-- 启动 rviz -->
  <!-- <node pkg="rviz" type="rviz" name="rviz" /> -->
  <node pkg="rviz" type="rviz" name="rviz" args="-d $(find jubot_demo)/config/rviz/show_four_wheel_car.rviz" />
 
  <!-- 启动机器人状态和关节状态发布节点 -->
  <node pkg="robot_state_publisher" type="robot_state_publisher" name="robot_state_publisher" />
  <node pkg="joint_state_publisher" type="joint_state_publisher" name="joint_state_publisher" />
 
  <!-- 启动图形化的控制关节运动节点 -->
  <node pkg="joint_state_publisher_gui" type="joint_state_publisher_gui" name="joint_state_publisher_gui" />
 
 
</launch>

2.4启动launch

roslaunch jubot_demo box_launch.launch

alt

3.Rviz控制机器人模型运动

3.1安装 Arbotix

sudo apt-get install ros-melodic-arbotix

3.2 添加 arbotix 所需的配置文件

在config文件夹下新建hello.yaml文件
hello.yaml:

# 该文件是控制器配置,一个机器人模型可能有多个控制器,比如: 底盘、机械臂、夹持器(机械手)....
# 因此,根 name 是 controller
controllers: {
   # 单控制器设置
   base_controller: {
          #类型: 差速控制器
       type: diff_controller,
       #参考坐标
       base_frame_id: base_footprint, 
       #两个轮子之间的间距
       base_width: 0.2,
       #控制频率
       ticks_meter: 2000, 
       #PID控制参数,使机器人车轮快速达到预期速度
       Kp: 12, 
       Kd: 12, 
       Ki: 0, 
       Ko: 50, 
       #加速限制
       accel_limit: 1.0 
    }
}

3.3在launch 文件中配置 arbotix 节点

在box_launch.launch中添加下列代码:

<!-- 配置 arbotix 节点 -->
  <node name="arbotix" pkg="arbotix_python" type="arbotix_driver" output="screen">
    <rosparam file="$(find jubot_demo)/config/hello.yaml" command="load" />
    <param name="sim" value="true" />
  </node>

3.3启动 launch 文件并控制机器人模型运动

启动launch文件

roslaunch jubot_demo box_launch.launch
alt

二、 参考课件资料,在ROS中利用ROS工具完成你手机广角津贴(畸变较为严重)的标定,写出详细过程和输出结果。

1.ROS中使用摄像头

1.1 验证摄像头设备可用

使用命令ls /dev/检查当前设备列表
如果设备列表中有video*设备,则摄像头设备在当前系统中有被正确的识别。
alt

1.2 安装cheese

sudo apt install cheese
alt

1.3 在虚拟机设置中将usb兼容性改成3.1

alt

1.4 测试

输入 cheese 命令成功打开摄像头,检查拍照软件是否能显示摄像头画面
alt

2.获取摄像头驱动包

2.1 usb_cam

usb_cam可以通过apt方式直接安装二进制包,如果使用其他版本的ROS,自行替换命令中的noetic字段

sudo apt install ros-melodic-usb-cam
2.1.1 rosrun方式运行

先启动roscore,然后运行驱动节点usb_cam_node

roscore
rosrun usb_cam usb_cam_node 

摄像头启动后启用rqt工具查看图像

rqt_image_view

alt

2.1.2 roslaunch方式运行

usb_cam包中提供了一个launch文件例程usb_cam-test.launch

roslaunch usb_cam usb_cam-test.launch

在这个launch文件中除了启动usb_cam_node节点外还会包含一个image_view用于预览摄像头画面

三、在ROS下,下载编译orbslam2代码,并在kitti数据集的一个序列图像中进行实验。

1.ORB-SLAM2 安装和编译

1.1 ORB-SLAM2下载

在终端上下载

git clone https://github.com/raulmur/ORB_SLAM2

alt

1.2 环境配置

1.2.1 安装Pangolin
git clone https://github.com/stevenlovegrove/Pangolin

OpenGL:

sudo apt install libgl1-mesa-dev

Glew:

sudo apt-get install libglew-dev

Boost:

sudo apt-get install libboost-dev libboost-thread-dev libboost-filesystem-dev

Python2/Python3:

sudo apt-get install libpython2.7-dev

接下来就可以安装Pangolin了

cd Pangolin
mkdir build 
cd build
cmake ..
cmake --build .

Pangolin安装完毕

1.2.2 安装OpenCV3(安装4会冲突!)

(1)安装cmake和依赖环境

sudo apt-get install cmake
sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg-dev libswscale-dev libtiff5-dev
sudo apt-get install libgtk2.0-dev
sudo apt-get install pkg-config

(2)下载opencv3

下载地址:https://opencv.org/releases/
点击Sources进行下载自己需要的版本
alt
(3)解压文件
解压后,将文件夹放自己喜欢的地方,将解压后的文件夹重新命为opencv3
在opencv3文件夹下新建build文件夹
终端运行

make build

进入build文件夹下

cd build 

(4)进行cmake
在build目录下运行

sudo cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..

alt
(5)进行编译

sudo make -j8

(6)进行安装

sudo make install

alt

(7)配置环境

修改ld.so.conf文件
用gedit打开/etc/ld.so.conf
在文件中加上一行 /usr/loacal/lib
其中/user/loacal是opencv安装路径也就是makefile中指定的安装路径

sudo gedit /etc/ld.so.conf

输入:

include /usr/local/lib

保存退出
运行下面语句刷新库链接配置

sudo ldconfig

(8)修改bash.bashrc文件

sudo gedit /etc/bash.bashrc 

在文件末尾加入:

PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH

alt

保存退出

然后在命令行中输入刷新

source /etc/bash.bashrc

(9)检验是否安装成功

pkg-config opencv --modversion

alt
如图所示,出现版本号就安装成功了。

1.2.3 安装Eigen3

推荐大家安装版本 3.2.10这个版本目前是最稳定的bug较少

大家可以在这个网站下载。
alt
点击如图所示的ZIP文件下载后解压放到ubantu中,进入eigen文件加中执行以下步骤

mkdir build
cd build
cmake ..
sudo make install

安装后,头文件安装在/usr/local/include/eigen3中。这一步十分重要我们需要去检查安装到的路径。不然后在后续的ORB-SLAM2编译过程中会找不到文件。后续我们会在问题后告诉大家如何解决
最后一步的 DBoW2 和 g2o ,他们已经存在于ORB-SLAM2文件夹中的 Thirdparty文件夹中

1.2.4 Ceres安装

先安装依赖项:

sudo apt-get install  liblapack-dev libsuitesparse-dev libcxsparse3 libgflags-dev libgoogle-glog-dev libgtest-dev

git clone https://github.com/ceres-solver/ceres-solver.git

编译:

cd ceres-solver
mkdir build && cd build
cmake ..
sudo make -j8
sudo make install
1.2.5DBoW3安装
git下来

mkdir build
cd build/
cmake ..
make
sudo make install
1.2.6 g2o安装

安装依赖:

sudo apt-get install qt5-qmake qt5-default libqglviewer-dev-qt5 libsuitesparse-dev libcxsparse3 libcholmod3

git下来

编译:

cd g2o
mkdir build && cd build
cmake ..
sudo make -j8
sudo make install

1.3 安装运行ORB_SLAM2

提取码:9527
下载后,提取到主目录,,将文件夹名改为ORB_SLAM2,打开一个新终端,输入以下代码:

cd ORB_SLAM2
chmod +x build.sh
./build.sh

2.运行Kitee数据集

2.1 数据集准备

Computer Vision Group - Dataset Download (tum.de)
alt
下载好后,进入ORB_SLAM2文件夹创建一个文件夹:data,将下载好的数据集压缩包提取到data下面,然后打开一个新终端输入以下命令:

cd ORB_SLAM2
./Examples/Monocular/mono_tum Vocabulary/ORBvoc.txt Examples/Monocular/TUM1.yaml data/rgbd_dataset_freiburg1_xyz

alt

参考

【Autolabor初级教程】ROS机器人入门
Scout mini 仿真指南
http://www.autolabor.com.cn/book/ROSTutorials/
https://blog.csdn.net/weixin_68811361/article/details/138228355

  • 24
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ROS(Robot Operating System)是一个开源的机器人操作系统,它提供了一系列的软件库和工具,可以帮助开发者轻松地构建机器人应用程序。在ROS中,可以使用各种传感器和执行器来感知和操纵机器人,同时还有众多功能强大的软件包可供使用。 对于ROS机器人小车建模,首先需要定义其物理模型和运动模型。物理模型涉及到小车的尺寸、质量分布以及各个部件之间的连接关系等,可以使用三维建模软件(如SolidWorks、Blender等)进行建模。在模型中,可以添加传感器和执行器的模型,以便在软件层面对其进行控制和感知。 接下来,需要在ROS中创建一个软件包,该软件包将包含小车的相关源代码和配置文件。在软件包中,可以编写小车的控制算法、传感器数据处理和与外部环境的通信接口等。根据小车的物理模型和运动模型,可以在软件包中定义小车的运动规划和控制算法,使其能够实现自主导航、避障等功能。 在ROS的开发过程中,可以使用ROS提供的各种工具和软件包快速构建和测试小车的功能。例如,可以使用Gazebo仿真平台对小车进行虚拟环境下的仿真测试,通过仿真可以更快速地验证和优化算法;同时,可以使用Rviz可视化工具对小车的运动、传感器数据等进行可视化展示和调试。 总之,ROS提供了丰富的功能和工具,可用于对机器人小车进行建模和开发。通过合理的物理模型设计和运动算法编写,可以实现小车的各种功能,从而实现自主导航、运动规划、避障等应用。在开发过程中,可以利用ROS的丰富生态系统和强大的社区支持,使机器人小车建模更加高效和便捷。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值