大佬,解决了没有,同问
截图 2025-06-08 16-49-39.png
在执行colcon build 为什么会显示code1出现问题啊,求大佬告知
下图是rviz2显示的里程计前进就会拐弯
#include <Arduino.h> #include <Esp32PcntEncoder.h> #include <Esp32McpwmMotor.h> #include <PidController.h> #include <Kinematics.h> // 引入Microros和wifi相关的库 #include <WiFi.h> #include <micro_ros_platformio.h> #include <rcl/rcl.h> #include <rclc/rclc.h> #include <rclc/executor.h> #include <geometry_msgs/msg/twist.h> // 消息接口 #include <nav_msgs/msg/odometry.h>//里程计消息接口 #include <micro_ros_utilities/string_utilities.h>//引入字符串内存分配初始化工具 // 声明一些相关的结构体对象 rcl_allocator_t allocator; // 内存分配器,用于动态内存分配管理 rclc_support_t support; // 用于存储时钟,内存分配器和上下文,用于提供支持 rclc_executor_t executor; // 执行器,用于管理订阅和计时器回调的执行 rcl_node_t node; // 节点,用于创建节点 rcl_subscription_t sub_cmd_vel; // 创建一个订阅者 geometry_msgs__msg__Twist msg_cmd_vel; // 订阅到的数据存储到这里 rcl_publisher_t pub_odom;//创建一个里程计发布者 nav_msgs__msg__Odometry msg_odom;//里程计消息存储在这 rcl_timer_t timer;//定时器可以定时调用某个函数 Esp32PcntEncoder encoders[2]; // 创建一个数组用于存储两个编码器 Esp32McpwmMotor motor; // 创建一个名为motor的对象,用于控制电机 PidController pid_controller[2]; Kinematics kinematics; float target_linear_speed = 0.0; // 单位 毫米每秒 float target_angular_speed = 0.0; // 单位 弧度每秒 float out_left_speed = 0.0; // 输出的左右轮速度,不是反馈的左右轮速度 float out_right_speed = 0.0; // 定时器的回调函数 void timer_callback(rcl_timer_t* timer,int64_t last_call_time) { // 完成里程计的发布 odom_t odom = kinematics.get_odom(); // 获取当前的里程计 int64_t stamp = rmw_uros_epoch_millis(); // 获取当前的时间 msg_odom.header.stamp.sec = static_cast<int32_t>(stamp/1000); // 秒部分 msg_odom.header.stamp.nanosec = static_cast<int32_t>((stamp%1000)*1e6); // 纳秒部分 msg_odom.pose.pose.position.x = odom.x; msg_odom.pose.pose.position.y = odom.y; msg_odom.pose.pose.orientation.w = cos(odom.angle*0.5); msg_odom.pose.pose.orientation.x = 0; msg_odom.pose.pose.orientation.y = 0; msg_odom.pose.pose.orientation.z = sin(odom.angle*0.5); msg_odom.twist.twist.linear.x = odom.linear_speed; msg_odom.twist.twist.angular.z = odom.angular_speed; // 发布里程计,把数据发出去 if(rcl_publish(&pub_odom,&msg_odom,NULL)!=RCL_RET_OK) { Serial.println("error: odom pub failed!"); } } void twist_callback(const void * msg_in) { // 将受到的消息指针转换成 geometry_msgs__msg__Twist 类型的指针 const geometry_msgs__msg__Twist* msg = (const geometry_msgs__msg__Twist*)msg_in; target_linear_speed = msg->linear.x * 1000; target_angular_speed = msg->angular.z; kinematics.kinematics_inverse(target_linear_speed, target_angular_speed, &out_left_speed, &out_right_speed); Serial.printf("OUT:left_speed=%f,right_speed=%f\n", out_left_speed, out_right_speed); pid_controller[0].update_target(out_left_speed); pid_controller[1].update_target(out_right_speed); } // 单独创建一个任务运行 micro-ROS 相当于一个线程 void microros_task(void *args) { // 1.设置传输协议并延迟一段时间等待设置的完成 IPAddress agent_ip; agent_ip.fromString("192.168.3.149"); // 设置agent的IP地址 set_microros_wifi_transports("HUAWEI-R1CP6X", "xqdjx1703", agent_ip, 8888); // 设置传输协议 delay(3000); // 等待2秒,等待WIFI连接 // 2.初始化内存分配器 allocator = rcl_get_default_allocator(); // 获取默认的内存分配器 // 3.初始化支持 rclc_support_init(&support, 0, NULL, &allocator); // 初始化支持 // 4.初始化节点 rclc_node_init_default(&node, "fishbot_motion_control", "", &support); // 初始化节点 // 5.初始化执行器 unsigned int num_handles = 2; // 订阅和计时器的回调数量,注意这是一个要改的参数 rclc_executor_init(&executor, &support.context, num_handles, &allocator); // 初始化执行器 // 初始化订阅者,并将其添加到执行其中 rclc_subscription_init_best_effort(&sub_cmd_vel,&node, ROSIDL_GET_MSG_TYPE_SUPPORT(geometry_msgs,msg,Twist),"/cmd_vel"); rclc_executor_add_subscription(&executor,&sub_cmd_vel,&msg_cmd_vel,&twist_callback,ON_NEW_DATA); //初始化msgs初始化主机和从机 msg_odom.header.frame_id =micro_ros_string_utilities_set(msg_odom.header.frame_id,"odom"); msg_odom.child_frame_id =micro_ros_string_utilities_set(msg_odom.child_frame_id,"base_footprint"); //初始化发布者和定时器 rclc_publisher_init_best_effort(&pub_odom,&node,ROSIDL_GET_MSG_TYPE_SUPPORT(nav_msgs,msg,Odometry),"/odom"); rclc_timer_init_default(&timer,&support,RCL_MS_TO_NS(50),timer_callback); rclc_executor_add_timer(&executor,&timer); //时间同步 while(!rmw_uros_epoch_synchronized()) { rmw_uros_sync_session(1000);//超时时间 delay(10); } // 循环执行器 rclc_executor_spin(&executor); } // v=w*r // r = v/w = 0.05/0.1 = 0.5 0.02/0.1 = 0.2 m void setup() { // 初始化串口 Serial.begin(115200); // 初始化串口通信,设置通信速率为115200 // 初始化电机驱动器 motor.attachMotor(0, 22, 23); // 将电机0连接到引脚22和引脚23 motor.attachMotor(1, 12, 13); // 将电机1连接到引脚12和引脚13 // 初始化编码器 encoders[0].init(0, 32, 33); // 初始化第一个编码器,使用GPIO 32和33连接 encoders[1].init(1, 26, 25); // 初始化第二个编码器,使用GPIO 26和25连接 // 初始化PID控制器的参数 pid_controller[0].update_pid(0.625, 0.125, 0.0); pid_controller[1].update_pid(0.625, 0.125, 0.0); pid_controller[0].out_limit(-100, 100); pid_controller[1].out_limit(-100, 100); // 初始化运动学参数 kinematics.set_wheel_distance(175); // mm kinematics.set_motor_param(0, 0.105805); kinematics.set_motor_param(1, 0.105805); // 测试下运动学逆解 // 创建一个任务运行 micro-ROS xTaskCreate(microros_task, "microros_task", 10240, NULL, 1, NULL); } void loop() { delay(10); // 等待10毫秒 kinematics.update_motor_speed(millis(), encoders[0].getTicks(), encoders[1].getTicks()); // 记得调用更新电机速度函数 motor.updateMotorSpeed(0, pid_controller[0].update( kinematics.get_motor_speed(0))); motor.updateMotorSpeed(1, pid_controller[1].update(kinematics.get_motor_speed(1))); // Serial.printf("speed1=%d,speed2=%d\n",kinematics.get_motor_speed(0),kinematics.get_motor_speed(1)); // Serial.printf("x,y,yaw=%f,%f,%f\n", kinematics.get_odom().x, kinematics.get_odom().y, kinematics.get_odom().angle);1e4a11f0-20be-4edb-8823-b1c5165106e2-image.png
回复: 动手学ros 10.3.2 配置使用IMU后,出错同样的问题,我用的是虚拟的imu,启用imu'数据后也报错!截图 2025-06-05 17-24-58.png cartographer_node节点直接不见了
目前可以通过Rviz2中手动标记目标点实现导航,但是我想用Nav2的API simple_commander实现导航,gotoPose和followPath方法都尝试了,分别有不同的报错:
gotoPose:开始导航后显示距离目标点的距离是0,机器人也开始转圈,转了几秒之后就显示导航失败。Rviz中的机器人模型也在一直旋转
5a3e65f7-1726-46fc-b80d-6aca59b474b7-image.png
fffd3888-e69a-41aa-8fed-80083ed06440-image.png
followPath:无法生成正常的路径
583951aa-a514-484d-b06e-2443e046c1a6-image.png
位置初始化我订阅了/initialpose话题,通过rivz2的2D pose Estimation给定位置。 调用API的代码如下图:
1552d484-593a-45b7-b2f3-e81cebc29daa-image.png
--- stderr: moveit_task_constructor_core
In file included from /home/lzx/moveit2_ws/src/moveit_task_constructor/core/include/moveit/task_constructor/stage.h:43,from/home/lzx/moveit2_ws/src/moveit_task_constructor/core/include/moveit/task_constructor/container.h:41, from /home/lzx/moveit2_ws/src/moveit_task_constructor/core/include/moveit/task_constructor/container_p.h:41,
from /home/lzx/moveit2_ws/src/moveit_task_constructor/core/src/container.cpp:37:
/home/lzx/moveit2_ws/src/moveit_task_constructor/core/include/moveit/task_constructor/utils.h:47:10: fatal error: moveit/macros/class_forward.hpp: 没有那个文件或目录
47 | #include <moveit/macros/class_forward.hpp>
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
gmake[2]: *** [src/CMakeFiles/moveit_task_constructor_core.dir/build.make:76:src/CMakeFiles/moveit_task_constructor_core.dir/container.cpp.o] 错误 1
gmake[1]: *** [CMakeFiles/Makefile2:364:src/CMakeFiles/moveit_task_constructor_core.dir/all] 错误 2
gmake[1]: *** 正在等待未完成的任务....
gmake: *** [Makefile:146:all] 错误 2
Failed <<< moveit_task_constructor_core [6.27s, exited with code 2]
Summary: 10 packages finished [24.3s]
1 package failed: moveit_task_constructor_core
1 package had stderr output: moveit_task_constructor_core
4 packages not processed
请问有什么解决方法?
0f866415-c861-4f71-9ee0-ab7991288197-image.png
marlin2.1.1
老师,我这里启用MicroROS服务,报错啥意思,我那个服务正常安装了
f5e342f8-197a-4398-a296-52bb959e3a1a-b9a9133f-20a0-40c2-aaa2-7d62a3edc226.png
gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][16.79s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][16.89s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][1699s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][17.09s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][17.20s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][17.30s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][17.40s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][17.50s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][17.60s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][17.70s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][17.80s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][17.90s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][18.00s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][18.10s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][18.20s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][18.30s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][18.40s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][18.50s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][18.60s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][18.70s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][18.80s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][18.91s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][19.01s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][19.11s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][19.21s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][19.31s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][19.41s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][19.51s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][19.61s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][19.71s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][19.81s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][19.91s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][20.01s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][20.11s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][20.21s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][20.31s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][20.41s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][20.52s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][20.62s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][20.72s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][20.82s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][20.92s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][21.02s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][21.12s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][21.22s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][21.32s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][21.42s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][21.52s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][21.62s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][21.72s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][21.82s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][21.92s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][22.02s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][22.12s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][22.22s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][22.33s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][22.43s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][22.53s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][22.63s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][22.73s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][22.83s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][22.93s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][23.03s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][23.13s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][23.23s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][23.33s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][23.43s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][23.53s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][23.63s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][23.73s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][23.83s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][23.93s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][24.03s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][24.14s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][24.24s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][24.34s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][24.44s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][24.54s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][24.64s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][24.74s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][24.84s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][24.94s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][25.04s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][25.14s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][25.24s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][25.34s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][25.44s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][25.54s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][25.64s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][25.74s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][25.85s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][25.95s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][26.05s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][26.15s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][26.25s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][26.35s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][26.45s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][26.55s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][26.65s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][26.75s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][26.85s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][26.95s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][27.05s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][27.15s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][27.25s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][27.35s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][27.45s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][27.56s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][27.66s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][27.76s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][27.86s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][27.96s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][28.06s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][28.16s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][28.26s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][28.36s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][28.46s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][28.56s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][28.66s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][28.76s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][28.86s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][28.96s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][29.06s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][29.16s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][29.26s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][29.36s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][29.47s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][29.57s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][29.67s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][29.77s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][29.87s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][29.97s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][30.07s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][30.17s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][30.27s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][30.37s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][30.47s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][30.57s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][30.67s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][30.77s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][30.87s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][30.98s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][31.08s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][31.18s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][31.28s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][31.38s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][31.48s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][31.58s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][31.68s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][31.78s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][31.88s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][31.98s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][32.08s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][32.18s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][32.28s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][32.38s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][32.48s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][32.58s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][32.68s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][32.79s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][32.89s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][32.99s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][33.09s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][33.19s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][33.29s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][33.39s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][33.49s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][33.59s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][33.69s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][33.79s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][33.89s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][33.99s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][34.09s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][34.19s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][34.29s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][34.39s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][34.49s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][34.59s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][34.70s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][34.80s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][34.90s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][35.00s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][35.10s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][35.20s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][35.30s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][35.40s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][35.50s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][35.60s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][35.70s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][35.80s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][35.90s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][36.00s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][36.10s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][36.20s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][36.30s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][36.41s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][36.51s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][36.61s] Executing: /tmp/apt-key-gpghome.s0naGxNf3Z/gpg.1.sh --keyserver keys[][36.71s] Warning: apt-key output should not be parsed (stdout is not a termin[-][36.80s] CMD Result:code:2
Run CMD Task:[dpkg --print-architecture]
[-][0.00s] CMD Result:success
根据您的系统,为您推荐安装源为['http://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu/', 'http://mirrors.tuna.tsinghua.edu.cn/ros2/ubuntu/']
Run CMD Task:[sudo rm -rf /etc/apt/sources.list.d/ros-fish.list]
[-][0.00s] CMD Result:success
创建文件:/etc/apt/sources.list.d/ros-fish.list
Run CMD Task:[sudo apt update]
[][6.03s] 204 packages can be upgraded. Run 'apt list --upgradable' to see them[-][6.05s] CMD Result:success
Run CMD Task:[sudo apt search ros-base ]
[][0.69s] A package which extends 'ros_core' and includes other basic functio[-][0.69s] A package which extends 'ros_core' and includes other basic functio[][0.69s] End-Effector package: provides a ROS-based set of standard interfac[-][0.69s] Node that enables connected ROS-based devices or robots to exchange[/][0.69s] ros-noetic-ros-base/focal 1.5.0-1focal.20250521.010531 amd64 [upgrada[][0.69s] A metapackage which extends ros_core and includes other basic non-r[-][0.69s] A package which extends 'ros_core' and includes other basic functio[-][0.69s] CMD Result:success
恭喜,成功添加ROS源,接下来可以使用apt安装ROS或者使用[1]一键安装ROS安装!
Run CMD Task:[sudo apt search ros-base ]
[][0.70s] A package which extends 'ros_core' and includes other basic functio[-][0.70s] A package which extends 'ros_core' and includes other basic functio[][0.70s] End-Effector package: provides a ROS-based set of standard interfac[-][0.70s] Node that enables connected ROS-based devices or robots to exchange[/][0.70s] ros-noetic-ros-base/focal 1.5.0-1focal.20250521.010531 amd64 [upgrada[][0.70s] A metapackage which extends ros_core and includes other basic non-r[-][0.70s] A package which extends 'ros_core' and includes other basic functio[/][0.70s] A package which extends 'ros_core' and includes other basic functio[-][0.70s] CMD Result:success
RUN Choose Task:[请输入括号内的数字]
请选择你要安装的ROS版本名称(请注意ROS1和ROS2区别):
[1]:foxy(ROS2)
[2]:galactic(ROS2)
[3]:noetic(ROS1)
[4]:rolling(ROS2)
[0]:quit
请输入[]内的数字以选择:3
RUN Choose Task:[请输入括号内的数字]
请选择安装的具体版本(如果不知道怎么选,请选1桌面版):
[1]:noetic(ROS1)桌面版
[2]:noetic(ROS1)基础版(小)
[0]:quit
请输入[]内的数字以选择:1
Run CMD Task:[sudo apt search aptitude ]
[|][1.02s] aptitude-common/focal,focal,now 0.8.12-1ubuntu4 all [installed,automa[][1.03s] brain teaser game and trainer to have fun and to keep your brain tr[-][1.03s] CMD Result:success s)
Run CMD Task:[sudo apt install aptitude -y]
[-][1.02s] CMD Result:success
Run CMD Task:[sudo apt install ros-noetic-desktop-full -y]
Reading package lists... Done
Building dependency tree
Reading state information... Done
ros-noetic-desktop-full is already the newest version (1.5.0-1focal.20250521.014741).
0 upgraded, 0 newly installed, 0 to remove and 204 not upgraded.
Run CMD Task:[sudo apt install ros-noetic-desktop-full -y]
[-][0.50s] ros-noetic-desktop-full is already the newest version (1.5.0-1focal.2[-][0.60s] CMD Result:success
Run CMD Task:[sudo apt search python3-catkin-tools ]
[-][0.67s] CMD Result:success
Run CMD Task:[sudo apt install python3-catkin-tools -y]
[-][0.60s] CMD Result:success
Run CMD Task:[sudo apt search python3-rosdep ]
[/][0.74s] python3-rosdep-modules/focal,focal,now 0.25.1-1 all [installed,automa[-][0.74s] CMD Result:success
Run CMD Task:[sudo apt install python3-rosdep -y]
[-][0.61s] CMD Result:success
Run CMD Task:[ls /opt/ros/noetic/setup.bash]
[-][0.00s] CMD Result:success
欢迎使用一键配置ROS开发环境,本工具由作者小鱼提供
Run CMD Task:[ls /opt/ros/*/setup.bash]
[-][0.00s] CMD Result:success
正在准备配置用户目录:/home/koorui/.bashrc
当前系统包含1个ROS,已为您完成启动终端自动激活ROS环境,修改/home/koorui/.bashrc可关闭
正在准备配置用户目录:/root/.bashrc
当前系统包含1个ROS,已为您完成启动终端自动激活ROS环境,修改/root/.bashrc可关闭
恭喜你,安装成功了,再附赠你机器人学习宝藏网站:鱼香社区:https://fishros.org.cn/forum
Run CMD Task:[ls /opt/ros/noetic/setup.bash]
[-][0.00s] CMD Result:success
小鱼,黄黄的提示:您安装的是ROS1,可以打开一个新的终端输入roscore测试!
欢迎加入机器人学习交流QQ群:438144612(入群口令:一键安装)
鱼香小铺正式开业,最低499可入手一台能建图会导航的移动机器人,淘宝搜店:鱼香ROS 或打开链接查看:https://item.taobao.com/item.htm?id=696573635888
如在使用过程中遇到问题,请打开:https://fishros.org.cn/forum 进行反馈
检测到本次运行出现失败命令,直接退出按Ctrl+C,按任意键上传日志并退出
开始前准备:
硬件:
传输控制板*1 Type-B电源线*1 网线*1 带网口的电脑或者USB网卡*1 9~28V电源软件:
安装Ubuntu的系统*1 安装好ROS2 Humble以上版本ROS系统 1. micro-ROS Agent 和 消息接口下载与构建在主目录下创建,ros2_transmission_ws 目录及子目录src(其他目录也可以)
mkdir -p ~/ros2_transmission_ws/src下载源码
cd ~/ros2_transmission_ws/src git clone http://github.fishros.org/https://github.com/fishros/micro-ROS-Agent -b humble git clone http://github.fishros.org/https://github.com/fishros/robot_interfaces git clone http://github.fishros.org/https://github.com/micro-ROS/micro_ros_msgs.git -b humble构建工作空间
cd ~/ros2_transmission_ws/ colcon build --- Starting >>> micro_ros_agent Starting >>> robot_interfaces Finished <<< robot_interfaces [6.76s] [Processing: micro_ros_agent] --- stderr: micro_ros_agent 正克隆到 'xrceagent'... 切换到一个新分支 'ros2' HEAD 目前位于 c25243c Enable Domain Override on Reference and XML Participant (#351) CMake Warning (dev) at /usr/share/cmake-3.22/Modules/FindPackageHandleStandardArgs.cmake:438 (message): The package name passed to `find_package_handle_standard_args` (tinyxml2) does not match the name of the calling package (TinyXML2). This can lead to problems in calling code that expects `find_package` result variables (e.g., `_FOUND`) to follow a certain pattern. Call Stack (most recent call first): cmake/modules/FindTinyXML2.cmake:40 (find_package_handle_standard_args) /opt/ros/humble/share/fastrtps/cmake/fastrtps-config.cmake:51 (find_package) CMakeLists.txt:153 (find_package) This warning is for project developers. Use -Wno-dev to suppress it. --- Finished <<< micro_ros_agent [56.9s] Summary: 2 packages finished [58.9s] 1 package had stderr output: micro_ros_agent看到:Summary: 2 packages finished [58.9s] 就表示构建成功了,中间的警告请忽略。
2.完成硬件连接这种连接方式的特点是,通过网线将雷达和电脑(控制卡)直连,优点是稳定。
连接方式:
电脑<----Type-B|USB线----->控制板USB口
电脑<----网线----->控制板网口
电源---->控制板电源口
打开配置助手,扫描配置,确认如下选项的值,若不是,请手动修改。
配置项 描述 默认值 transport_mode 传输模式(例如以太网静态IP配置协议) eth_static server_ip 服务器的IP地址 192.168.168.5 eth_ip 设备的以太网IP地址 192.168.168.250 server_port 服务器的端口号 8888传输模式我们这里采用 eth_static ,静态IP模式,并设置控制板的IP地址为 192.168.168.250 ,你也可以自己根据情况设定,但需要保证,服务IP,以太网IP在同一个子网下。
设置完成后请手动或者点击配置助手的重启设备进行重启。
4. 设置电脑IP地址为了调试方便,我们手动来修改电脑中对应接口的网卡IP地址为配置中的server_ip,在Linux中使用 ifconfig可以临时设置对应网卡的IP地址。(注意只是临时,调试阶段建议使用,正式使用请文末方法)
使用ifconfig查看所有网卡
ifconfig --- enx4ce173422378: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet6 fe80::915b:c170:f24c:844c prefixlen 64 scopeid 0x20<link> ether 4c:e1:73:42:23:78 txqueuelen 1000 (以太网) RX packets 22 bytes 7392 (7.3 KB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 136 bytes 15185 (15.1 KB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 1000 (本地环回) RX packets 879222 bytes 758350473 (758.3 MB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 879222 bytes 758350473 (758.3 MB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0可以看到我这里有一个USB网卡:enx4ce173422378 是以太网(你的可能不是这个名字,请仔细辨别)
接着我们用ifconfig来设置IP地址,
sudo ifconfig enx4ce173422378 192.168.168.5 netmask 255.255.255.0设置完成后再次查看这个网卡的IP地址。
ifconfig enx4ce173422378 enx4ce173422378: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.168.5 netmask 255.255.255.0 broadcast 192.168.168.255 inet6 fe80::915b:c170:f24c:844c prefixlen 64 scopeid 0x20<link> ether 4c:e1:73:42:23:78 txqueuelen 1000 (以太网) RX packets 8 bytes 2688 (2.6 KB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 38 bytes 6858 (6.8 KB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0可以看到这里的地址,inet 192.168.168.5 netmask 255.255.255.0 broadcast 192.168.168.255, 已经被成功设置了。
5.运行agent,接收消息进入到工作空间,运行agent
cd ~/ros2_transmission_ws/ source install/setup.bash ros2 run micro_ros_agent micro_ros_agent udp4 --port 8888 -v4 --- [1718247114.695455] info | UDPv4AgentLinux.cpp | init | running... | port: 8888 [1718247114.695599] info | Root.cpp | set_verbose_level | logger setup | verbose_level: 4 [1718247213.629429] info | Root.cpp | create_client | create | client_key: 0x17679F09, session_id: 0x81 [1718247213.629612] info | SessionManager.hpp | establish_session | session established | client_key: 0x17679F09, address: 192.168.168.250:47138 [1718247213.661143] info | ProxyClient.cpp | create_participant | participant created | client_key: 0x17679F09, participant_id: 0x000(1) [1718247213.663314] info | ProxyClient.cpp | create_topic | topic created | client_key: 0x17679F09, topic_id: 0x000(2), participant_id: 0x000(1) [1718247213.664917] info | ProxyClient.cpp | create_publisher | publisher created | client_key: 0x17679F09, publisher_id: 0x000(3), participant_id: 0x000(1) [1718247213.666583] info | ProxyClient.cpp | create_datawriter | datawriter created | client_key: 0x17679F09, datawriter_id: 0x000(5), publisher_id: 0x000(3) [1718247213.668377] info | ProxyClient.cpp | create_topic | topic created | client_key: 0x17679F09, topic_id: 0x001(2), participant_id: 0x000(1) [1718247213.669829] info | ProxyClient.cpp | create_subscriber | subscriber created | client_key: 0x17679F09, subscriber_id: 0x000(4), participant_id: 0x000(1) [1718247213.671514] info | ProxyClient.cpp | create_datareader | datareader created | client_key: 0x17679F09, datareader_id: 0x000(6), subscriber_id: 0x000(4) [1718247213.673291] info | ProxyClient.cpp | create_topic | topic created | client_key: 0x17679F09, topic_id: 0x002(2), participant_id: 0x000(1) [1718247213.674897] info | ProxyClient.cpp | create_publisher | publisher created | client_key: 0x17679F09, publisher_id: 0x001(3), participant_id: 0x000(1) [1718247213.676535] info | ProxyClient.cpp | create_datawriter | datawriter created | client_key: 0x17679F09, datawriter_id: 0x001(5), publisher_id: 0x001(3) [1718247213.678195] info | ProxyClient.cpp | create_topic | topic created | client_key: 0x17679F09, topic_id: 0x003(2), participant_id: 0x000(1) [1718247213.679745] info | ProxyClient.cpp | create_subscriber | subscriber created | client_key: 0x17679F09, subscriber_id: 0x001(4), participant_id: 0x000(1) [1718247213.681438] info | ProxyClient.cpp | create_datareader | datareader created | client_key: 0x17679F09, datareader_id: 0x001(6), subscriber_id: 0x001(4) [1718247213.683368] info | ProxyClient.cpp | create_topic | topic created | client_key: 0x17679F09, topic_id: 0x004(2), participant_id: 0x000(1) [1718247213.685201] info | ProxyClient.cpp | create_publisher | publisher created | client_key: 0x17679F09, publisher_id: 0x002(3), participant_id: 0x000(1) [1718247213.686799] info | ProxyClient.cpp | create_datawriter | datawriter created | client_key: 0x17679F09, datawriter_id: 0x002(5), publisher_id: 0x002(3) [1718247213.688641] info | ProxyClient.cpp | create_topic | topic created | client_key: 0x17679F09, topic_id: 0x005(2), participant_id: 0x000(1) [1718247213.690344] info | ProxyClient.cpp | create_subscriber | subscriber created | client_key: 0x17679F09, subscriber_id: 0x002(4), participant_id: 0x000(1) [1718247213.692013] info | ProxyClient.cpp | create_datareader | datareader created | client_key: 0x17679F09, datareader_id: 0x002(6), subscriber_id: 0x002(4)看到上面的日志就表示连接成功了,接着就可以尝试订阅IO状态话题,打开新的终端,输入如下命令:
cd ~/ros2_transmission_ws/ source install/setup.bash ros2 topic echo /read_io --- analog: [] digital: - 1 - 1 - 1 - 1 --- analog: [] digital: - 1 - 1 - 1 - 1 --- ...可以看到这里每帧输出了四个数据,是四个输入IO的状态,这个话题默认以10Hz进行发布,发布频率可以修改。
使用 ros2 topic list 可以查看控制器节点可以支持的话题。
话题名称 消息接口 订阅/发布 /write_485 robot_interfaces/msg/RawUInt8 订阅 /write_can robot_interfaces/msg/CanFrame 订阅 /write_io robot_interfaces/msg/WriteIO 订阅 /read_485 robot_interfaces/msg/RawUInt8 发布 /read_can robot_interfaces/msg/CanFrame 发布 /read_io robot_interfaces/msg/ReadIO 发布关于每个话题如何使用,可以参考例程篇介绍。
6. 永久设置静态IP地址 方法1在 Ubuntu/Debian 系统终端中输入如下命令:
编辑/etc/network/interfaces文件:
sudo nano /etc/network/interfaces添加或修改以下内容:
auto enx4ce173422378 iface enx4ce173422378 inet static address 192.168.168.5 netmask 255.255.255.0 gateway 192.168.168.1保存后重启即可永久设置。
方法2查看网络接口名称:
使用以下命令查看你的网络接口名称:
找到你要设置静态 IP 的接口名称(例如 ens33 或 enx4ce173422378)。
编辑 netplan 配置文件:
打开 netplan 配置文件,例如:
在 ethernets 部分添加以下内容(根据你的实际情况进行调整):
network: version: 2 renderer: networkd ethernets: enx4ce173422378: addresses: [192.168.168.5/24] routes: - to: 0.0.0.0/0 via: 192.168.168.1 nameservers: addresses: [8.8.8.8, 8.8.4.4]设置文件权限
sudo chmod 600 /etc/netplan/00-installer-config.yaml保存并应用更改:
保存文件并应用更改:
验证设置:
使用以下命令验证你的设置:
ros2 humble+ros2 control+gazebo fortress
小车可以旋转和前后移动,但无法左右平移
一下是相关代码:
包括小车底盘模型,ros2 control控制以及配置文件,和启动文件
我有点担心启动文件是否正确
微信图片_20250604141253.jpg 微信图片_20250604141309.jpg
想知道这是怎么回事😢
怎么解决?
我现在需要一个可以很好安装,无错的方式,来实现U盘双系统安装;过程可以稍微复杂一点,但是无错,很好的运行
问题描述:使用的是下面的推荐,安装双系统的方式
FISHROS2OS链接:https://pan.baidu.com/s/16PO_ddC-_6V-f5BWuiMAjw?pwd=fish 提取码:fish
FISHROS2使用介绍:【不用装虚拟机双系统,三分钟让你拥有一个ROS随身系统-哔哩哔哩】 https://b23.tv/zKuzdYU
QQ图片20250604102130.png
按照视频中的教学,解压安装,导致在烧录的时候;
打开图片文件时出错.png
U盘下载过两次,两次都是同样的结果,都是烧录失败;
尝试过的解决方法:①U盘下载过两次,两次都是同样的结果,都是烧录失败;
②最后我在社区找到了3月份的一个帖子,也是同样的问题,但是我觉得用处不大,因为我想要能够安装双系统的问题没有解决;
我觉得问题的点;可能在安装包本身,①因为有其他的人有同样的结果;②在进行选择移动硬盘的时候,显示的路径感觉不太对(当时没有截),但是因为只有一个选项可以选择
移动硬盘选择.png
foxy版本6.3.2按照书上 写加转动惯量 运行后 rviz里面没有Mass Properties这个选项 有遇到过的没 如何解决
2025-06-04 01-05-00 的屏幕截图.png
这是4.2.3的代码,在注册之后,colcon build,source等之后,运行,报错2025-06-04 01-06-50 的屏幕截图.png
有没有使用imu加pid控制自定义角度转向的历程,自己写出来的怪怪的
ros1中在nodelet的不同子节点如何在不改代码的情况下,依照子节点输出不同的日志
fba4a9e2-be04-4631-92db-c518b113ad82-image.png
为什么我在这块地方的Fixed Frame 不能为 选择为base_link啊?
01.urdf
01.launch
<launch> <!-- 设置参数 --> <param name="robot_description" textfile="$(find urdf01)/urdf/urdf/01.urdf" /> <!-- 启动 rviz --> <node pkg="rviz" type="rviz" name="rviz" /> </launch>c1795a66-d4c8-40e5-90a9-a936b2d60247-image.png ![f4eb9402-2632-4256-a195
这是提示
5ea0c74b-1fee-448d-8cb3-bd7308b008b0-图片.png
配置了ssid和pwd,还是连接不上无线网,重新扫描配置发现没配置上
版块
-
1.3k
主题4.8k
帖子 -
432
主题2.9k
帖子 -
51
主题219
帖子 -
1.0k
主题4.2k
帖子 -
985
主题3.6k
帖子 -
5
主题11
帖子 -
356
主题1.6k
帖子