ros2工程

创建第一个ros节点工程

依赖安装

# 安装rosdep依赖工具
	sudo apt install -y python3-pip
    sudo pip3 install rosdepc
    rosdepc init && rosdepc update 

安装colcon编译工具

    sudo apt install python3-colcon-common-extensions
    #编译小乌龟
    mkdir -p ~/dev_ws/src
    cd ~/dev_ws/src
    #克隆到刚刚创建的src目录下
    git clone https://github.com/ros/ros_tutorials.git -b dashing-devel
    #检测依赖
    rosdep install -i --from-path src --rosdistro dashing -y
    #编译
    colcon build

新建工作空间

mkdir -p ~/dev_ws/src

C++ 节点功能包

#在src目录下
ros2 pkg create --build-type ament_cmake learning_c
# 在工作空间下
#新建learning_c/src/node_c.cpp
#include "rclcpp/rclcpp.hpp"
int main(int argc, char **argv)
{
    rclcpp::init(argc, argv);
    auto node = std::make_shared<rclcpp::Node>("node_c");
    RCLCPP_INFO(node->get_logger(), "node_c启动");
    rclcpp::spin(node);
    rclcpp::shutdown();
    return 0;
}
#在CmakeLists.txt最后一行加入下面两行代码
add_executable(learning_c src/node_c.cpp)
ament_target_dependencies(learning_c rclcpp)

install(TARGETS
  node_c
  DESTINATION lib/${PROJECT_NAME}
)
colcon build   # 编译工作空间所有功能包
source install/local_setup.bash

Python 节点

#在src目录下
ros2 pkg create --build-type ament_python learning_py
#在learning_py/learning_py下新建node_py.py
import rclpy                                     
from rclpy.node import Node                     
import time
def main(args=None):                           
    rclpy.init(args=args)                        
    node = Node("node_py") # 节点名               
    while rclpy.ok():                            
        node.get_logger().info("Hello World")    
        time.sleep(0.5)                          
    node.destroy_node()                            
    rclpy.shutdown()                           
#setup.py文件里“entry_points”配置的程序入口
'node_py       = learning_py.node_py:main'
# 在工作空间下
colcon build   # 编译工作空间所有功能包
source install/local_setup.bash

SetuptoolsDeprecationWarning

pip install setuptools==58.2.0

只编译一个功能包

colcon build --packages-select YOUR_PKG_NAME 

每次调整 python 脚本时都不必重新build了

colcon build --symlink-install
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 是的,当您在新的终端窗口中打开ROS2工程时,需要再次输入source命令来加载ROS2环境变量和源文件。这是因为ROS2需要在每个新的终端窗口中重新加载环境变量和源文件。如果您不再次输入source命令,则可能会导致ROS2工程无法正常运行。 ### 回答2: 运行ROS2工程时,每个终端都需要手动source一次环境变量以加载ROS2相关的设置。这是因为ROS2使用了不同于ROS1的编译和运行架构。 当我们开启一个终端时,为了让该终端能够识别ROS2的命令和工程设置,我们需要在该终端中先执行source命令。这个命令会读取ROS2安装目录下的setup.bash文件,并将ROS2所需的环境变量添加到当前终端的环境中。这样,终端就能够使用ROS2相关的命令和工具了。 在source命令执行后,ROS2的环境变量会被添加到当前终端的环境中,可以使用ros2命令执行ROS2相关的操作。当我们再次开启一个新的终端时,新终端的环境变量是相互独立的,不会自动继承前一个终端的环境设置。因此,我们需要再次在新终端中执行source命令,并加载ROS2的环境变量。 为了方便使用,我们可以将source命令添加到终端的启动脚本中,如bashrc文件或zshrc文件,这样每次开启终端时就不需要手动执行source命令了。这样,我们就可以直接在每个终端中使用ROS2的命令和工具,而不用每次都source一次码。 总结来说,运行ROS2工程时,每次再次开启一个新的终端都需要手动执行source命令,以加载ROS2相关的环境变量,并将其添加到该终端的环境中。这样才能使用ROS2的命令和工具来进行开发和运行。 ### 回答3: 在运行ROS2工程时,每次开启一个新的终端都需要重新执行`source`命令,主要是因为ROS2使用了分布式的环境变量管理系统。在ROS2中,每个终端都是一个独立的进程,它们之间需要通过共享相同的环境变量来进行通信和协作。为了保证运行环境的一致性,每次开启新的终端都需要重新加载ROS2的环境变量。 当我们执行`source`命令时,实际上是将ROS2的环境变量加载到当前终端的环境中。这些环境变量包含了ROS2所需的各种路径和配置信息,例如包含安装路径、库路径和包路径等。通过加载这些环境变量,我们可以在当前终端中使用ROS2的各项功能和工具。 需要注意的是,每次开启一个新的终端后,由于环境变量并不是全局共享的,所以需要重新执行`source`命令。这样,新的终端就能够获取到正确的ROS2环境,并能够正常运行ROS2工程。 综上所述,每次开启一个终端时需要重新执行`source`命令,主要是为了加载ROS2的环境变量,确保每个终端的运行环境一致,以便正常使用ROS2的功能和工具。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值