@李万宝 缺少一些环境如rosdep init
可参看教程https://blog.csdn.net/qq_64671439/article/details/135287166?fromshare=blogdetail&sharetype=blogdetail&sharerId=135287166&sharerefer=PC&sharesource=m0_73665762&sharefrom=from_link
Now lidar is scanning...
[ydlidar_node-2] [2025-02-04 12:16:33][error] Check Sum 0x5BD4 != 0x4A74
[ydlidar_node-2] [2025-02-04 12:16:35][error] Check Sum 0x000E != 0x0D22
[ydlidar_node-2] [2025-02-04 12:16:35][error] Check Sum 0x6002 != 0x66CE
[ydlidar_node-2] [2025-02-04 12:16:38][error] Timeout count: 1
[ydlidar_node-2] [YDLIDAR ERROR]: -1 Operation timed out
[ydlidar_node-2] [ERROR] [1738671398.428723538] [ydlidar_node]: Failed to get scan
colcon build不报错,但是ros2 run status_publisher sys_status_pub就报错,报错内容为
(base) jack@jack-HP-ZBook-Power-15-6-inch-G10-Mobile-Workstation-PC:~/ros2/learning/chapter3/topic_practice_ws$ ros2 run status_publisher sys_status_pub [INFO] [1738679500.556775450] [sys_status_pub]: sys_status_pub, start! Traceback (most recent call last): File "/opt/ros/humble/local/lib/python3.10/dist-packages/rosidl_generator_py/import_type_support_impl.py", line 46, in import_type_support return importlib.import_module(module_name, package=pkg_name) File "/usr/lib/python3.10/importlib/__init__.py", line 126, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "<frozen importlib._bootstrap>", line 1050, in _gcd_import File "<frozen importlib._bootstrap>", line 1027, in _find_and_load File "<frozen importlib._bootstrap>", line 1004, in _find_and_load_unlocked ModuleNotFoundError: No module named 'status_interfaces.status_interfaces_s__rosidl_typesupport_c' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/home/jack/ros2/learning/chapter3/topic_practice_ws/install/status_publisher/lib/status_publisher/sys_status_pub", line 33, in <module> sys.exit(load_entry_point('status-publisher==0.0.0', 'console_scripts', 'sys_status_pub')()) File "/home/jack/ros2/learning/chapter3/topic_practice_ws/install/status_publisher/lib/python3.10/site-packages/status_publisher/sys_status_pub.py", line 31, in main node = SysStatusPub("sys_status_pub") File "/home/jack/ros2/learning/chapter3/topic_practice_ws/install/status_publisher/lib/python3.10/site-packages/status_publisher/sys_status_pub.py", line 11, in __init__ self.sys_status_publisher_ = self.create_publisher(SystemStatus, "sys_status", 10) # 创建发布者 File "/opt/ros/humble/local/lib/python3.10/dist-packages/rclpy/node.py", line 1290, in create_publisher check_is_valid_msg_type(msg_type) File "/opt/ros/humble/local/lib/python3.10/dist-packages/rclpy/type_support.py", line 35, in check_is_valid_msg_type check_for_type_support(msg_type) File "/opt/ros/humble/local/lib/python3.10/dist-packages/rclpy/type_support.py", line 29, in check_for_type_support msg_or_srv_type.__class__.__import_type_support__() File "/home/jack/ros2/learning/chapter3/topic_practice_ws/install/status_interfaces/lib/python3.12/site-packages/status_interfaces/msg/_system_status.py", line 31, in __import_type_support__ module = import_type_support('status_interfaces') File "/opt/ros/humble/local/lib/python3.10/dist-packages/rosidl_generator_py/import_type_support_impl.py", line 48, in import_type_support raise UnsupportedTypeSupport(pkg_name) rosidl_generator_py.import_type_support_impl.UnsupportedTypeSupport: Could not import 'rosidl_typesupport_c' for package 'status_interfaces' [ros2run]: Process exited with failure 1sys_status_pub.py的代码的内容为
import rclpy from status_interfaces.msg import SystemStatus from rclpy.node import Node import psutil import platform class SysStatusPub(Node): def __init__(self, node_name): super().__init__(node_name) self.get_logger().info(f"{node_name}, start!") self.sys_status_publisher_ = self.create_publisher(SystemStatus, "sys_status", 10) # 创建发布者 self.create_timer(1, self.timer_callback) def timer_callback(self): msg = SystemStatus() msg.stamp = self.get_clock().now().to_msg() # 获取当前时间 msg.host_name = platform.node() # 主机名 msg.cpu_percent = psutil.cpu_percent() # CPU使用率 msg.mem_percent = psutil.virtual_memory().percent # 内存使用率 msg.mem_total = psutil.virtual_memory().total / 1024 / 1024 # 内存使用率 msg.mem_available = psutil.virtual_memory().available / 1024 / 1024 # 内存使用率 msg.net_sent = psutil.net_io_counters().bytes_sent / 1024 / 1024 # 网络发送量,字节B(/1024/1024) -> MB msg.net_recv = psutil.net_io_counters().bytes_recv / 1024 / 1024 # 网络接收量,字节B(/1024/1024) -> MB self.sys_status_publisher_.publish(msg) # 发布消息 self.get_logger().info(f"发布了{str(msg)}") def main(): rclpy.init() node = SysStatusPub("sys_status_pub") rclpy.spin(node) rclpy.shutdown()工程结构为
26f16dcb-62bf-46a9-8152-333ad3fa473b-图片.png
尝试很多方法没能解决,求助!!!
如何实现功能包之间的相互调用
#include <iostream>
#include "KCF_Tracker.h"
#include <rclcpp/rclcpp.hpp>
#include <cv_bridge/cv_bridge.h>
#include "kcftracker.h"
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
Rect selectRect;
Point origin;
Rect result;
bool select_flag = false;
bool bRenewROI = false;
bool bBeginKCF = false;
Mat rgbimage;
Mat depthimage;
const int &ACTION_ESC = 27;
const int &ACTION_SPACE = 32;
void onMouse(int event, int x, int y, int, void *) {
if (select_flag) {
selectRect.x = MIN(origin.x, x);
selectRect.y = MIN(origin.y, y);
selectRect.width = abs(x - origin.x);
selectRect.height = abs(y - origin.y);
selectRect &= Rect(0, 0, rgbimage.cols, rgbimage.rows);
}
if (event == 1) {
// if (event == CV_EVENT_LBUTTONDOWN) {
bBeginKCF = false;
select_flag = true;
origin = Point(x, y);
selectRect = Rect(x, y, 0, 0);
} else if (event == 4) {
// } else if (event == CV_EVENT_LBUTTONUP) {
select_flag = false;
bRenewROI = true;
}
}
void ImageConverter::Reset() {
bRenewROI = false;
bBeginKCF = false;
selectRect.x = 0;
selectRect.y = 0;
selectRect.width = 0;
selectRect.height = 0;
linear_speed = 0;
rotation_speed = 0;
enable_get_depth = false;
this->linear_PID->reset();
this->angular_PID->reset();
vel_pub_->publish(geometry_msgs::msg::Twist());
}
void ImageConverter::Cancel() {
this->Reset();
// destroyWindow(DEPTH_WINDOW);
}
void ImageConverter::PIDcallback() {
this->minDist=1.0; this->linear_PID->Set_PID(3.0, 0.0, 1.0); this->angular_PID->Set_PID(0.5, 0.0, 2.0); this->linear_PID->reset(); this->angular_PID->reset();}
void ImageConverter::imageCb(const std::shared_ptr<sensor_msgs::msg::Image> msg) {
cv_bridge::CvImagePtr cv_ptr;
try {
cv_ptr = cv_bridge::toCvCopy(msg, sensor_msgs::image_encodings::BGR8);
}
catch (cv_bridge::Exception &e) {
std::cout<<"cv_bridge exception"<<std::endl;
return;
}
}
void ImageConverter::depthCb(const std::shared_ptr<sensor_msgs::msg::Image> msg) {
this->get_parameter<float>("minDist_",this->minDist);
cv_bridge::CvImagePtr cv_ptr;
try {
cv_ptr = cv_bridge::toCvCopy(msg, sensor_msgs::image_encodings::TYPE_32FC1);
cv_ptr->image.copyTo(depthimage);
}
catch (cv_bridge::Exception &e) {
std::cout<<"Could not convert from to 'TYPE_32FC1'."<<std::endl;
}
if (enable_get_depth) {
int center_x = (int)(result.x + result.width / 2);
std::cout<<"center_x: "<<center_x<<std::endl;
int center_y = (int)(result.y + result.height / 2);
std::cout<<"center_y: "<<center_y<<std::endl;
dist_val[0] = depthimage.at<float>(center_y - 5, center_x - 5)/1000.0;
dist_val[1] = depthimage.at<float>(center_y - 5, center_x + 5)/1000.0;
dist_val[2] = depthimage.at<float>(center_y + 5, center_x + 5)/1000.0;
dist_val[3] = depthimage.at<float>(center_y + 5, center_x - 5)/1000.0;
dist_val[4] = depthimage.at<float>(center_y, center_x);
std::cout<<"dist_val[0]: "<<dist_val[0]<<std::endl;
std::cout<<"dist_val[1]: "<<dist_val[1]<<std::endl;
std::cout<<"dist_val[2]: "<<dist_val[2]<<std::endl;
std::cout<<"dist_val[3]: "<<dist_val[3]<<std::endl;
std::cout<<"dist_val[4]: "<<dist_val[4]<<std::endl;
float distance = 0;
int num_depth_points = 5;
for (int i = 0; i < 5; i++) {
if (dist_val[i] > 0.4 && dist_val[i] < 10.0) distance += dist_val[i];
else num_depth_points--;
}
distance /= num_depth_points;
std::cout<<distance<<std::endl;
if (num_depth_points != 0) {
std::cout<<"minDist: "<<minDist<<std::endl;
if (abs(distance - this->minDist) < 0.1) linear_speed = 0;
else linear_speed = -linear_PID->compute(this->minDist, distance);//-linear_PID->compute(minDist, distance)
}
rotation_speed = angular_PID->compute(320 / 100.0, center_x / 100.0);//angular_PID->compute(320 / 100.0, center_x / 100.0)
if (abs(rotation_speed) < 0.1)rotation_speed = 0;
geometry_msgs::msg::Twist twist;
twist.linear.x = linear_speed;
twist.angular.z = rotation_speed;
vel_pub_->publish(twist);
// imshow(DEPTH_WINDOW, depthimage);
waitKey(1);
}
void ImageConverter::JoyCb(const std::shared_ptr<std_msgs::msg::Bool> msg) {
enable_get_depth = msg->data;
}
这段代码是什么含义,请逐行翻译
但是当我希望同时构建与oop.cpp同目录src下的test.cpp时779e1054-9c09-49a8-a988-2c67fee7cb70-image.png eda62742-500c-4f3a-bf3c-51c2c76a3783-image.png
使用colcon build却出现以下报错:yozora@yozoracomputer:~/cpp_oop_ws/src$ colcon build
Starting >>> oop
--- stderr: oop
In file included from /usr/include/x86_64-linux-gnu/c++/11/bits/c++allocator.h:33,
from /usr/include/c++/11/bits/allocator.h:46,
from /usr/include/c++/11/memory:64,
from /opt/ros/humble/include/rclcpp/rclcpp/rclcpp.hpp:153,
from /home/yozora/cpp_oop_ws/src/oop/src/test.cpp:1:
/usr/include/c++/11/ext/new_allocator.h: In instantiation of ‘void __gnu_cxx::new_allocator<_Tp>::construct(_Up*, _Args&& ...) [with _Up = rclcpp::Node; _Args = {int, const char (&)[8], const char (&)[8]}; _Tp = rclcpp::Node]’:
/usr/include/c++/11/bits/alloc_traits.h:516:17: required from ‘static void std::allocator_traits<std::allocator<_Tp1> >::construct(std::allocator_traits<std::allocator<_Tp1> >::allocator_type&, _Up*, _Args&& ...) [with _Up = rclcpp::Node; _Args = {int, const char (&)[8], const char (&)[8]}; _Tp = rclcpp::Node; std::allocator_traits<std::allocator<_Tp1> >::allocator_type = std::allocatorrclcpp::Node]’
/usr/include/c++/11/bits/shared_ptr_base.h:519:39: required from ‘std::_Sp_counted_ptr_inplace<_Tp, _Alloc, _Lp>::_Sp_counted_ptr_inplace(_Alloc, _Args&& ...) [with _Args = {int, const char (&)[8], const char (&)[8]}; _Tp = rclcpp::Node; _Alloc = std::allocatorrclcpp::Node; __gnu_cxx::_Lock_policy _Lp = __gnu_cxx::_S_atomic]’
/usr/include/c++/11/bits/shared_ptr_base.h:650:16: required from ‘std::__shared_count<_Lp>::__shared_count(_Tp*&, std::_Sp_alloc_shared_tag<_Alloc>, _Args&& ...) [with _Tp = rclcpp::Node; _Alloc = std::allocatorrclcpp::Node; _Args = {int, const char (&)[8], const char (&)[8]}; __gnu_cxx::_Lock_policy _Lp = __gnu_cxx::_S_atomic]’
/usr/include/c++/11/bits/shared_ptr_base.h:1342:14: required from ‘std::__shared_ptr<_Tp, _Lp>::__shared_ptr(std::_Sp_alloc_shared_tag<_Tp>, _Args&& ...) [with _Alloc = std::allocatorrclcpp::Node; _Args = {int, const char (&)[8], const char (&)[8]}; _Tp = rclcpp::Node; __gnu_cxx::_Lock_policy _Lp = __gnu_cxx::_S_atomic]’
/usr/include/c++/11/bits/shared_ptr.h:409:59: required from ‘std::shared_ptr<_Tp>::shared_ptr(std::_Sp_alloc_shared_tag<_Tp>, _Args&& ...) [with _Alloc = std::allocatorrclcpp::Node; _Args = {int, const char (&)[8], const char (&)[8]}; _Tp = rclcpp::Node]’
/usr/include/c++/11/bits/shared_ptr.h:862:14: required from ‘std::shared_ptr<_Tp> std::allocate_shared(const _Alloc&, _Args&& ...) [with _Tp = rclcpp::Node; _Alloc = std::allocatorrclcpp::Node; _Args = {int, const char (&)[8], const char (&)[8]}]’
/usr/include/c++/11/bits/shared_ptr.h:878:39: required from ‘std::shared_ptr<_Tp> std::make_shared(_Args&& ...) [with _Tp = rclcpp::Node; _Args = {int, const char (&)[8], const char (&)[8]}]’
/home/yozora/cpp_oop_ws/src/oop/src/test.cpp:5:45: required from here
/usr/include/c++/11/ext/new_allocator.h:162:11: error: no matching function for call to ‘rclcpp::Node::Node(int, const char [8], const char [8])’
162 | { ::new((void *)__p) _Up(std::forward<_Args>(_args)...); }
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /opt/ros/humble/include/rclcpp/rclcpp/executors/single_threaded_executor.hpp:28,
from /opt/ros/humble/include/rclcpp/rclcpp/executors.hpp:22,
from /opt/ros/humble/include/rclcpp/rclcpp/rclcpp.hpp:155,
from /home/yozora/cpp_oop_ws/src/oop/src/test.cpp:1:
/opt/ros/humble/include/rclcpp/rclcpp/node.hpp:1294:3: note: candidate: ‘rclcpp::Node::Node(const rclcpp::Node&, const string&)’
1294 | Node(
| ^~~~
/opt/ros/humble/include/rclcpp/rclcpp/node.hpp:1294:3: note: candidate expects 2 arguments, 3 provided
/opt/ros/humble/include/rclcpp/rclcpp/node.hpp:101:12: note: candidate: ‘rclcpp::Node::Node(const string&, const string&, const rclcpp::NodeOptions&)’
101 | explicit Node(
| ^~~~
/opt/ros/humble/include/rclcpp/rclcpp/node.hpp:102:25: note: no known conversion for argument 1 from ‘int’ to ‘const string&’ {aka ‘const std::cxx11::basic_string<char>&’}
102 | const std::string & node_name,
| ~~~~~~~~~~^
/opt/ros/humble/include/rclcpp/rclcpp/node.hpp:89:12: note: candidate: ‘rclcpp::Node::Node(const string&, const rclcpp::NodeOptions&)’
89 | explicit Node(
| ^~
/opt/ros/humble/include/rclcpp/rclcpp/node.hpp:89:12: note: candidate expects 2 arguments, 3 provided
gmake[2]: *** [CMakeFiles/test.dir/build.make:76: CMakeFiles/test.dir/src/test.cpp.o] Error 1
gmake[1]: *** [CMakeFiles/Makefile2:165: CMakeFiles/test.dir/all] Error 2
gmake[1]: *** Waiting for unfinished jobs....
gmake: *** [Makefile:146: all] Error 2
Failed <<< oop [15.6s, exited with code 2]
Summary: 0 packages finished [15.9s]
1 package failed: oop
1 package had stderr output: oop
版本:WSL(windows11)Ubuntu22.04 ROS2humble 当我再尝试学习时发现在import Node上出了问题,请问有什么解决方法吗。我只能搜索到引用rclpy失败的却无法搜索到引用Node失败的。
如何在VS code中的PlatformIO生成一个stm32的文件
frame用stm32Cude
如何在VS code中的PlatformIO生成一个stm32的文件
colcon build
Starting >>> realsense2_camera_msgs
--- stderr: realsense2_camera_msgs
Traceback (most recent call last):
File "/home/ros2/ros2_ws/build/realsense2_camera_msgs/ament_cmake_python/realsense2_camera_msgs/setup.py", line 4, in <module>
setup(
File "/home/ros2/.local/lib/python3.10/site-packages/setuptools/init.py", line 117, in setup
return distutils.core.setup(**attrs)
File "/home/ros2/.local/lib/python3.10/site-packages/setuptools/_distutils/core.py", line 186, in setup
return run_commands(dist)
File "/home/ros2/.local/lib/python3.10/site-packages/setuptools/_distutils/core.py", line 202, in run_commands
dist.run_commands()
File "/home/ros2/.local/lib/python3.10/site-packages/setuptools/_distutils/dist.py", line 983, in run_commands
self.run_command(cmd)
File "/home/ros2/.local/lib/python3.10/site-packages/setuptools/dist.py", line 999, in run_command
super().run_command(command)
File "/home/ros2/.local/lib/python3.10/site-packages/setuptools/_distutils/dist.py", line 1002, in run_command
cmd_obj.run()
File "/home/ros2/.local/lib/python3.10/site-packages/setuptools/command/egg_info.py", line 312, in run
self.find_sources()
File "/home/ros2/.local/lib/python3.10/site-packages/setuptools/command/egg_info.py", line 320, in find_sources
mm.run()
File "/home/ros2/.local/lib/python3.10/site-packages/setuptools/command/egg_info.py", line 548, in run
self.prune_file_list()
File "/home/ros2/.local/lib/python3.10/site-packages/setuptools/command/sdist.py", line 162, in prune_file_list
super().prune_file_list()
File "/home/ros2/.local/lib/python3.10/site-packages/setuptools/_distutils/command/sdist.py", line 380, in prune_file_list
base_dir = self.distribution.get_fullname()
File "/home/ros2/.local/lib/python3.10/site-packages/setuptools/_core_metadata.py", line 272, in get_fullname
return _distribution_fullname(self.get_name(), self.get_version())
File "/home/ros2/.local/lib/python3.10/site-packages/setuptools/_core_metadata.py", line 290, in _distribution_fullname
canonicalize_version(version, strip_trailing_zero=False),
TypeError: canonicalize_version() got an unexpected keyword argument 'strip_trailing_zero'
gmake[2]: *** [CMakeFiles/ament_cmake_python_build_realsense2_camera_msgs_egg.dir/build.make:70:CMakeFiles/ament_cmake_python_build_realsense2_camera_msgs_egg] 错误 1
gmake[1]: *** [CMakeFiles/Makefile2:447:CMakeFiles/ament_cmake_python_build_realsense2_camera_msgs_egg.dir/all] 错误 2
gmake[1]: *** 正在等待未完成的任务....
gmake: *** [Makefile:146:all] 错误 2
Failed <<< realsense2_camera_msgs [1.67s, exited with code 2]
Summary: 0 packages finished [1.83s]
1 package failed: realsense2_camera_msgs
1 package had stderr output: realsense2_camera_msgs
2 packages not processed
分析错误原因以及解决方案
gazebo /opt/ros/humble/share/gazebo_plugins/worlds/gazebo_ros_diff_drive_demo.world
Ubuntu电脑和stm32有哪些通讯方式
在ROS 2 Humble版本中,使用D455相机与YOLOv5进行视觉识别涉及多个步骤,包括安装依赖、配置相机驱动、编写ROS 2节点以加载YOLOv5模型并进行推理。以下是一个简要的指南,帮助你完成这个任务。
安装依赖确保你的系统已经安装了ROS 2 Humble和必要的Python环境。同时,需要安装Intel RealSense SDK和YOLOv5。
【bash】
安装ROS 2 Humble(如果尚未安装)sudo apt update
sudo apt install ros-humble-desktop
sudo apt-key adv --keyserver keys.gnupg.net --recv-key C8B3A55A6F3EFCDE
sudo add-apt-repository 'deb http://realsense-hw-public.s3.amazonaws.com/Debian/apt-repo bionic main' -u
sudo apt-get update
sudo apt-get install librealsense2-utils librealsense2-dev
pip install torch torchvision
git clone https://github.com/ultralytics/yolov5.git
cd yolov5
pip install -r requirements.txt
确保RealSense相机节点能在ROS 2中运行。你可以使用realsense2_camera包,该包通常包含在ROS 2的RealSense SDK中。
【bash】
安装realsense2_camera包(如果尚未安装)sudo apt-get install ros-humble-realsense2-camera
启动RealSense相机节点ros2 launch realsense2_camera rs_camera.launch.py
编写ROS 2节点创建一个新的ROS 2包,并编写一个节点来订阅RealSense相机的话题,使用YOLOv5进行对象检测。
【bash】
创建新的ROS 2工作空间mkdir -p ~/ros2_ws/src
cd ~/ros2_ws/src
ros2 pkg create --build-type ament_cmake yolov5_realsense
cd yolov5_realsense
mkdir src
touch src/yolov5_node.py
chmod +x src/yolov5_node.py
yolov5_node.py的示例代码如下:
【python】
import rclpy
from rclpy.node import Node
import cv2
import numpy as np
import rospy
from sensor_msgs.msg import Image
from realsense2_camera.msg import Int32MultiArray
import torch
model = torch.hub.load('ultralytics/yolov5', 'yolov5s')
class YOLOv5RealSenseNode(Node):
def init(self):
super().init('yolov5_realsense_node')
self.subscription = self.create_subscription(
Image,
'/camera/color/image_raw',
self.listener_callback,
10
)
self.subscription # 防止未使用警告
def main(args=None):
rclpy.init(args=args)
node = YOLOv5RealSenseNode()
rclpy.spin(node)
node.destroy_node()
rclpy.shutdown()
if name == 'main':
main()
确保你的CMakeLists.txt和package.xml文件正确配置以构建Python节点。
CMakeLists.txt:
【cmake】
cmake_minimum_required(VERSION 3.5)
project(yolov5_realsense)
if(NOT CMAKE_PREFIX_PATH)
set(CMAKE_PREFIX_PATH "/opt/ros/humble")
endif()
find_package(ament_cmake REQUIRED)
添加依赖项find_package(rclcpp REQUIRED)
find_package(sensor_msgs REQUIRED)
find_package(std_msgs REQUIRED)
find_package(realsense2_camera REQUIRED)
install(PROGRAMS
src/yolov5_node.py
DESTINATION lib/${PROJECT_NAME})
ament_package()
package.xml:
【xml】
<package format="2">
<name>yolov5_realsense</name>
<version>0.0.0</version>
<description>The yolov5_realsense package</description>
<maintainer email="your_email@todo.todo">your_name</maintainer>
<license>Apache-2.0</license>
<buildtool_depend>ament_cmake</buildtool_depend>
<build_depend>rclcpp</build_depend>
<build_depend>sensor_msgs</build_depend>
<build_depend>std_msgs</build_depend>
<build_depend>realsense2_camera</build_depend>
<exec_depend>rclcpp</exec_depend>
<exec_depend>sensor_msgs</exec_depend>
<exec_depend>std_msgs</exec_depend>
<exec_depend>realsense2_camera</exec_depend>
<export>
<build_type>ament_cmake</build_type>
</export>
</package>
回到工作空间根目录,编译并运行节点。
【bash】
cd ~/ros2_ws
colcon build --packages-select yolov5_realsense
source install/setup.bash
ros2 launch realsense2_camera rs_camera.launch.py
在另一个终端中运行YOLOv5节点ros2 run yolov5_realsense yolov5_node.py
请注意,上述代码是一个简化的示例,用于说明如何将YOLOv5与RealSense相机集成到ROS 2中。在实际应用中,你可能需要处理更多的细节,例如图像预处理、后处理、参数调优以及错误处理等。
请检查一下,并且纠错加完善
如何实现节点之间的相互调用
Starting >>> realsense2_camera_msgs
--- stderr: realsense2_camera_msgs
Traceback (most recent call last):
File "/home/ros2/ros2_ws/build/realsense2_camera_msgs/ament_cmake_python/realsense2_camera_msgs/setup.py", line 4, in <module>
setup(
File "/home/ros2/.local/lib/python3.10/site-packages/setuptools/init.py", line 117, in setup
return distutils.core.setup(**attrs)
File "/home/ros2/.local/lib/python3.10/site-packages/setuptools/_distutils/core.py", line 186, in setup
return run_commands(dist)
File "/home/ros2/.local/lib/python3.10/site-packages/setuptools/_distutils/core.py", line 202, in run_commands
dist.run_commands()
File "/home/ros2/.local/lib/python3.10/site-packages/setuptools/_distutils/dist.py", line 983, in run_commands
self.run_command(cmd)
File "/home/ros2/.local/lib/python3.10/site-packages/setuptools/dist.py", line 999, in run_command
super().run_command(command)
File "/home/ros2/.local/lib/python3.10/site-packages/setuptools/_distutils/dist.py", line 1002, in run_command
cmd_obj.run()
File "/home/ros2/.local/lib/python3.10/site-packages/setuptools/command/egg_info.py", line 312, in run
self.find_sources()
File "/home/ros2/.local/lib/python3.10/site-packages/setuptools/command/egg_info.py", line 320, in find_sources
mm.run()
File "/home/ros2/.local/lib/python3.10/site-packages/setuptools/command/egg_info.py", line 548, in run
self.prune_file_list()
File "/home/ros2/.local/lib/python3.10/site-packages/setuptools/command/sdist.py", line 162, in prune_file_list
super().prune_file_list()
File "/home/ros2/.local/lib/python3.10/site-packages/setuptools/_distutils/command/sdist.py", line 380, in prune_file_list
base_dir = self.distribution.get_fullname()
File "/home/ros2/.local/lib/python3.10/site-packages/setuptools/_core_metadata.py", line 272, in get_fullname
return _distribution_fullname(self.get_name(), self.get_version())
File "/home/ros2/.local/lib/python3.10/site-packages/setuptools/_core_metadata.py", line 290, in _distribution_fullname
canonicalize_version(version, strip_trailing_zero=False),
TypeError: canonicalize_version() got an unexpected keyword argument 'strip_trailing_zero'
gmake[2]: *** [CMakeFiles/ament_cmake_python_build_realsense2_camera_msgs_egg.dir/build.make:70:CMakeFiles/ament_cmake_python_build_realsense2_camera_msgs_egg] 错误 1
gmake[1]: *** [CMakeFiles/Makefile2:447:CMakeFiles/ament_cmake_python_build_realsense2_camera_msgs_egg.dir/all] 错误 2
gmake[1]: *** 正在等待未完成的任务....
gmake: *** [Makefile:146:all] 错误 2
Failed <<< realsense2_camera_msgs [4.79s, exited with code 2]
Summary: 0 packages finished [4.92s]
1 package failed: realsense2_camera_msgs
1 package had stderr output: realsense2_camera_msgs
2 packages not processed
屏幕截图 2025-02-01 182636.png
{
"configurations":[
{
"name":"Linux",
"includePath":[
"${workspaceFolder}/",
"/opt/ros/jazzy/include/",
"/usr/include/x86_64-linux-gnu/qt5/**"
],
"defines":[],
"compilerPath":"/usr/libexec/gcc",
"cStandard":"c17",
"cppStandard":"gnu++17",
"intelliSenseMode":"linux-gcc-x64"
}
],
"version":3.8
}
书籍配套课程3.4.5,小鱼开头的json文件(修改环境变量,实现编写代码提示)
修改了(1)includePath中humble为jazzy
(2)compilerPath (原本为"/usr/bin/gcc")
(3)version(原本为4)
但编写代码时(1)导入依赖红色波浪线
(2)编写代码时无提示
请问各位佬要如何解决?(我在网上没找到相关解决方法)
ros2 gazebo仿真小车转弯速度过慢,导致卡墙问题
我遇到了一些意外行为,反映在gazebo中使用navigation单点导航时小车卡墙。
【背景】
我正在跟随课程学习,同时我自己动手搭建了一个小车仿真。
【环境】
虚拟机ubuntu22.04
ROS Humble
✳小车的控制,因为还没想接入硬件,使用了diff插件
测试:
小车可以成功进行全局路径规划,但是在路径中会卡在墙边,无法脱困。
4dd034a8-40ea-45e9-b32d-272d98f38fb1-image.png
问题:
我观察到的情况是:
✳3.我尝试使用键盘控制小车,默认转速下(1.0)小车也转动的非常缓慢,手动增加转速(E)至3.5左右,小车的转速明显加快,并可以接受。 但这个转速并没有应用到导航中。
尝试过的解决方式:
增加diff插件中的转矩 <max_wheel_torque>1000</max_wheel_torque> 增加diff插件中的加速度<max_wheel_acceleration>100.0</max_wheel_acceleration> 减小轮胎摩擦<mu1 value="5.0"/>
<mu2 value="5.0"/> 增加导航params中的最大角速度max_vel_theta: 3.0
以上四个方法都没有任何帮助。
为尝试过的可能的解决方式:
我不确定这个问题是否和我的小车几何参数过小有关:
<!-- kinematics -->
<wheel_separation>0.08</wheel_separation>
<wheel_diameter>0.04</wheel_diameter>
希望可以得到帮助,感谢!
(PS:第一次提问,如果提问格式有问题也请不吝指出,我会在之后的提问中努力改进,感谢)
如题,如何在ros2 humble版本上安装D455相机并获取图像和深度信息
3.3.2章节
vscode里面
#include "rclcpp/rclcpp.hpp"
#include "geometry_msgs/msg/twist.hpp"
#include <chrono>
#include "turtlesim/msg/pose.hpp"
CMakeLists.txt 内的依赖
find_package(ament_cmake REQUIRED)
find_package(rclcpp REQUIRED)
find_package(geometry_msgs REQUIRED)
find_package(turtlesim REQUIRED)
package.xml 内的依赖
<buildtool_depend>ament_cmake</buildtool_depend>
<depend>geometry_msgs</depend>
<depend>turtlesim</depend>
<depend>rclcpp</depend>
How to install chatbox in the ubuntu24.04
/usr/include/gtest/internal/gtest-port.h:279:2: error: #error C++ versions less than C++14 are not supported.
279 | #error C++ versions less thanC++14 are not supported.
| ^~~~~
如何检测C++版本
版块
-
1.2k
主题4.4k
帖子 -
315
主题2.1k
帖子 -
1
主题12
帖子 -
899
主题3.8k
帖子 -
909
主题3.4k
帖子 -
2
主题5
帖子 -
340
主题1.5k
帖子