专业的o2o网站建设,定制类网站,龙里县建设局管方网站,wordpress 淘客网站一、说明 这里说说编译和包生成的操作要点#xff0c;以python包为例。对于初学者来说#xff0c;colcon和ament需要概念上搞清楚#xff0c;与此同时#xff0c;工作空间、包、节点在一个工程中需要熟练掌握。本文以humble版的ROS2#xff0c;进行python编程的实现。 二、…一、说明 这里说说编译和包生成的操作要点以python包为例。对于初学者来说colcon和ament需要概念上搞清楚与此同时工作空间、包、节点在一个工程中需要熟练掌握。本文以humble版的ROS2进行python编程的实现。 二、编译器安装配置 
2.1 关于编译器的安装 colcon是ros2的编译器如果我们想看到colcon编译器需要到指定位置 ls  /usr/share/colcon_argcomplete/hook/colcon-argcomplete.bash 如果没有安装需要如下语句安装之 sudo apt updatesudo apt install python3-colcon-common-extensions 一般来说在安装humble版ros2已经安装好colcon以上步骤可以忽略。 
2.2 关于编译器的配置 在~/.bashrc中配置编译器 vim ~/.bashrc 将以下语句追加到~/.bashrc的最后语句。 source /usr/share/colcon_argcomplete/hook/colcon-argcomplete.bash三、建立工程 
3.1 建立工程的工作空间 
cd ~/tmp
mkdir  -p ros2_ws/src 
3.2 编译一个空的workspace 编译一个空的工程 
cd ros2_ws
colcon build 设置系统路径、编译器路径、本工程的路径路径:sudo gedit ~/.bashrc,追加如下 source /opt/ros/humble/setup.bashsource /usr/share/colcon_argcomplete/hook/colcon-argcomplete.bashsource ~/tmp/ros2_ws/install/setup.bash 
四、建立一个软件包 
4.1 生成一个包 注意包生成的路径 cd   ros2_ws/src 生成一个包 ros2 pkg create my_robot_controller --build-type ament_python --dependencies rclpy通过以上create语句生成一个名字叫my_robot_controller的包。 
4.2 包的在工程中的位置 工作空间中不外乎两个指令编译指令、包生成指令它们执行的地点应该明确了。如下图 这里参看整个workspace的路径 
cd ros2_ws
tree 
├── build
│   ├── COLCON_IGNORE
│   └── my_robot_controller
│       ├── build
│       │   └── lib
│       │       └── my_robot_controller
│       │           └── __init__.py
│       ├── colcon_build.rc
│       ├── colcon_command_prefix_setup_py.sh
│       ├── colcon_command_prefix_setup_py.sh.env
│       ├── install.log
│       ├── my_robot_controller.egg-info
│       │   ├── dependency_links.txt
│       │   ├── entry_points.txt
│       │   ├── PKG-INFO
│       │   ├── requires.txt
│       │   ├── SOURCES.txt
│       │   ├── top_level.txt
│       │   └── zip-safe
│       └── prefix_override
│           ├── __pycache__
│           │   └── sitecustomize.cpython-310.pyc
│           └── sitecustomize.py
├── install
│   ├── COLCON_IGNORE
│   ├── local_setup.bash
│   ├── local_setup.ps1
│   ├── local_setup.sh
│   ├── _local_setup_util_ps1.py
│   ├── _local_setup_util_sh.py
│   ├── local_setup.zsh
│   ├── my_robot_controller
│   │   ├── lib
│   │   │   └── python3.10
│   │   │       └── site-packages
│   │   │           ├── my_robot_controller
│   │   │           │   ├── __init__.py
│   │   │           │   └── __pycache__
│   │   │           │       └── __init__.cpython-310.pyc
│   │   │           └── my_robot_controller-0.0.0-py3.10.egg-info
│   │   │               ├── dependency_links.txt
│   │   │               ├── entry_points.txt
│   │   │               ├── PKG-INFO
│   │   │               ├── requires.txt
│   │   │               ├── SOURCES.txt
│   │   │               ├── top_level.txt
│   │   │               └── zip-safe
│   │   └── share
│   │       ├── ament_index
│   │       │   └── resource_index
│   │       │       └── packages
│   │       │           └── my_robot_controller
│   │       ├── colcon-core
│   │       │   └── packages
│   │       │       └── my_robot_controller
│   │       └── my_robot_controller
│   │           ├── hook
│   │           │   ├── ament_prefix_path.dsv
│   │           │   ├── ament_prefix_path.ps1
│   │           │   ├── ament_prefix_path.sh
│   │           │   ├── pythonpath.dsv
│   │           │   ├── pythonpath.ps1
│   │           │   └── pythonpath.sh
│   │           ├── package.bash
│   │           ├── package.dsv
│   │           ├── package.ps1
│   │           ├── package.sh
│   │           ├── package.xml
│   │           └── package.zsh
│   ├── setup.bash
│   ├── setup.ps1
│   ├── setup.sh
│   └── setup.zsh
├── log
│   ├── build_2023-03-02_10-42-14
│   │   ├── events.log
│   │   └── logger_all.log
│   ├── build_2023-03-02_10-50-32
│   │   ├── events.log
│   │   ├── logger_all.log
│   │   └── my_robot_controller
│   │       ├── command.log
│   │       ├── stderr.log
│   │       ├── stdout.log
│   │       ├── stdout_stderr.log
│   │       └── streams.log
│   ├── build_2023-03-02_10-57-14
│   │   ├── events.log
│   │   ├── logger_all.log
│   │   └── my_robot_controller
│   │       ├── command.log
│   │       ├── stderr.log
│   │       ├── stdout.log
│   │       ├── stdout_stderr.log
│   │       └── streams.log
│   ├── COLCON_IGNORE
│   ├── latest - latest_build
│   └── latest_build - build_2023-03-02_10-57-14
└── src└── my_robot_controller├── my_robot_controller│   ├── __init__.py│   └── my_first_node.py├── package.xml├── resource│   └── my_robot_controller├── setup.cfg├── setup.py└── test├── test_copyright.py├── test_flake8.py└── test_pep257.py 
4.3 包生成后重新编译 在包生成后进行一次空的编译 
cd ros2_ws
colcon build 如果出现下述信息恭喜您有中着了 这里错误原因是setuptooks版本太高引起查看版本 pip3 list      如果没有pip3用sudo apt install python3-pip安装。 pip3 list |grep setuptools 用 pip install setuptools58.2.0 语句可以降低版本然后执行无误。 五、生成python节点 
5.1 节点程序位置 在以上的工作空间找到包路径 cd  ./ros2_ws/src/my_robot_controller/my_robot_controller 
5.2 编写节点 
文件名称 sudo vim first_node.py 将上述文件保存后执行colcon编译。注意colcon总是在workspace路径上执行 在setup.py配置如下 再次强调需要source文件.bashrc source /opt/ros/humble/setup.bashsource /usr/share/colcon_argcomplete/hook/colcon-argcomplete.bashsource ~/tmp/ros2_ws/install/setup.bash 再次编译编译过后执行 ros2 run  my_robot_controller  test_node 
可以启动。注意这里test_node也可以用first_node.py代替。