当前位置: 首页 > news >正文

网站信息备案查询系统外贸建设网站公司

网站信息备案查询系统,外贸建设网站公司,线上投票怎么做,邯郸企业做网站推广#x1f300; 一个中大型ROS项目常需要各个人员分别完成特定的功能#xff0c;而后再组合部署#xff0c;而各人员完成的功能常常依赖于一定的环境#xff0c;而我们很难确保这些环境之间不会相互冲突#xff0c;特别是涉及深度学习环境时。这就给团队项目的部署落地带来了… 一个中大型ROS项目常需要各个人员分别完成特定的功能而后再组合部署而各人员完成的功能常常依赖于一定的环境而我们很难确保这些环境之间不会相互冲突特别是涉及深度学习环境时。这就给团队项目的部署落地带来了极大的困难。虽然类似于conda这样的工具可以弥补一部分的不足但是对于项目部署而言还是不足的。 现在就针对上述的问题提出一种基于docker的ROS2通信解决方案其中会涉及docker network和docker compose等内容。容器与宿主机的ROS2版本LTS版(foxy/humble/…)都行。 01前情说明 首先有以下几点说明 (1) 宿主系统是基于ubuntu系统系统的架构x86_64或arm均可使用的是NVIDIA显卡且系统内已安装相应的显卡驱动。 (2) 宿主机和容器的架构(x86_64/arm64)保持一致。 (3) 如果宿主机开了VPN先关掉避免干扰。 为了讲解的方便假设我们有以下环境 (1) 宿主系统是ubuntu20.04架构是x86_64安装了ros foxy显卡是NVIDIA GTX 1650且显卡驱动可用。 (2) 宿主系统内docker和docker compose都可以正常使用。 (3) 有一个docker镜像(假设叫做image:latest)镜像环境是ubuntu22.04架构也是x86_64安装了ros humble。 02创建docker compose文件 第一步编写一个docker compose文件用以从镜像创建容器。这种方式会比使用docker run好些因为它能够把容器的参数写到文件里还能联调多个容器的关系对于多容器组合的项目开发比较友好。并且我建议如果你只有一个docker容器那也使用docker compose这样相对于docker run的命令行方式更容易维护。 mkdir project cd project touch project.yml然后编写project.yml的内容示例如下。这里之所有没用device:来挂载摄像头、激光雷达等外设那是因为这些外设的驱动节点(传感器数据发布节点)放在宿主机中更好容器只要订阅这些节点发布的话题进行处理即可。另外ROS_DOMAIN_ID要一样才能通信默认为0。 # 多对多自由 services:c1: # 服务名称(一个服务对应一个容器),自己取名即可container_name: c1 # 容器名称image: image:latest # 镜像名称working_dir: [your_workdir_path1] # 工作目录,比如/home/zhangsanshm_size: [your_share_memory_size] # 共享内存大小,比如4Gruntime: nvidia environment:- NVIDIA_VISIBLE_DEVICESall- DISPLAY${DISPLAY} # 设置DISPLAY环境变量 volumes:- [your_source_path1]:[your_target_path1] # 挂载项目目录- /dev/dri:/dev/dri # 挂载 GPU 设备- /tmp/.X11-unix:/tmp/.X11-unix:rw # 挂载 X11 Unix 套接字- ${HOME}/.Xauthority:/root/.Xauthority:rw # 挂载 X11 认证文件networks:- [network_name] # 共享网络名称比如ros_networkstdin_open: true # 相当于 -itty: true # 相当于 -tc2: # 服务名称(一个服务对应一个容器),自己取名即可container_name: c2 # 容器名称image: image:latest # 镜像名称working_dir: [your_workdir_path2] # 工作目录,比如/home/lisishm_size: [your_share_memory_size] # 共享内存大小,比如4Gruntime: nvidia environment:- NVIDIA_VISIBLE_DEVICESall- DISPLAY${DISPLAY} # 设置DISPLAY环境变量 volumes:- [your_source_path2]:[your_target_path2] # 挂载项目目录- /dev/dri:/dev/dri # 挂载 GPU 设备- /tmp/.X11-unix:/tmp/.X11-unix:rw # 挂载 X11 Unix 套接字- ${HOME}/.Xauthority:/root/.Xauthority:rw # 挂载 X11 认证文件networks:- [network_name] # 共享网络名称比如ros_networkstdin_open: true # 相当于 -itty: true # 相当于 -tnetworks: # 如果没有名称为ros_network的网络会自己创建一个。[network_name]:name: [network_name]driver: bridge03启动docker compose服务 开放X11服务(这样容器中的窗口就可以显示出来)并从project.yml文件启动docker容器。 xhost docker-compose -f project.yml up接着你可以查看网络信息确认是否共享上了 docker network ls你会看这样的信息 NETWORK ID NAME DRIVER SCOPE ecb8bca83c79 bridge bridge local 0e489127c701 host host local #这个是你宿主机的网络 fad86f998533 none null local 65b64309ebc2 ros_network bridge local #这个是你刚才创建的共享网络进一步查看共享网络信息 docker network inspect ros_network 你会看到这样的输出 # c1和c2之间的ROS2节点在ros_network子网中通信 # 容器ROS2节点通过把数据转发给ros_network网关网关再转接给host实现与宿主机ROS2节点通信 [{Name: ros_network,Id: 65b64309ebc2df88cd05c3a1fb33635ab4818fd6d2022ce028ad25ef22f2e0ef,Created: 2025-01-11T20:20:06.63280073508:00,Scope: local,Driver: bridge,EnableIPv6: false,IPAM: {Driver: default,Options: {},Config: [{Subnet: 172.18.0.0/16, # 子网Gateway: 172.18.0.1 # 网关}]},Internal: false,Attachable: false,Ingress: false,ConfigFrom: {Network: },ConfigOnly: false,Containers: {79ba2ce2e7914e02e9c36828eb40c343c5abe5f3ca43f2c61b304b91f8cd8de6: {Name: c1,EndpointID: f3956bf172423f84b4e2bf0d55d9c1149b9135dcc32cfc6d01c6770b86a0015d,MacAddress: 02:42:ac:12:00:03,IPv4Address: 172.18.0.3/16, # c1的ipIPv6Address: },d02027c00ae82e6589dd4690fb7f69974de9d867958f17ced17f3babe0c7527b: {Name: c2,EndpointID: 50b4abf51ee3f4b118b99813b061830a2cf2858ecffa4b2c6147849e378fe8b7,MacAddress: 02:42:ac:12:00:02,IPv4Address: 172.18.0.2/16, #c2的ipIPv6Address: }},Options: {},Labels: {}} ]04ROS2通信测试 另开两个终端分别在终端内运行以下命令进入容器(你可以开多个) docker exec -it c1 /bin/bash # 第一个终端(可以开多个) docker exec -it c2 /bin/bash # 第二个终端(可以开多个)启动以下节点 # 在宿主机中 ros2 run turtlesim turtlesim_node # 在c1容器中 ros2 run demo_nodes_cpp talker # [INFO] [1736647116.948458682] [talker]: Publishing: Hello World: 1 # 在c2容器中 ros2 run demo_nodes_cpp listener # [INFO] [1736647126.948946624] [listener]: I heard: [Hello World: 1]并分别在各环境中运行 ros2 node list如果所有环境中都输出了以下内容那就说明成功了。 /listener /talker /turtlesim05附录 5.1 安装docker compose # 从官方下载软件包(确保和自己机器的架构一致)https://github.com/docker/compose/releases # 假设下载了docker-compose-linux-x86_64到~/Downloads cd ~/Downloads # 改名 mv docker-compose-linux-x86_64 docker-compose # 移动到指定位置 sudo mv docker-compose /usr/local/bin # 赋予权限 sudo chmod x /usr/local/bin/docker-compose
http://www.hkea.cn/news/14542155/

相关文章:

  • 网站菜单样式微信网站建设报价表
  • 机场建设集团网站医药招商网站建设
  • 口碑好的唐山网站建设hugo网站建设
  • 怎么不花钱做网站外贸网站建设海外推广
  • wordpress站点迁移今天wordpress很慢
  • 网站建设开发流程世界知名设计公司名称
  • 村建站什么部门河南有名的做网站公司
  • 广东建设公司网站wordpress建立非博客
  • 西安网站创建东软网站建设方案
  • 虎丘做网站价格做英语陪同翻译兼职的网站
  • 湖南郴州市汝城县重庆网站优化网络服务
  • 成都网站设计创新互联wordpress 企業網
  • 照片编辑在线企业网站优化做法
  • 企业网站建设的原则是网站群建设分析
  • 重庆网站建设备案简单的商城的网页设计作业
  • 广州出名的网站免费做公益网站
  • 如何选择建网站公司做互联网网站的会抓
  • 2个淘宝可以做情侣网站么网站维护主要从哪几个方面做
  • 郑州高端网站制作设计一个自己的电商网站
  • 成都游戏网站建设网站建设行业标准
  • 建设银行网站是什么网店设计与装修实训报告
  • 六安市建设网站市场信息价网站seo如何做
  • 网站300m空间跨境一件代发平台
  • 哪个网站可以做微信推送爱做网站视频
  • 网站做拓扑图编辑wordpress 重置管理员密码
  • 大连免费建站模板手机如何制作自己的网站
  • 淄博做企业网站哪家好南充网站建设制作
  • 企业营销型网站推广方法四川电子有限公司 - 手机网站
  • 镇江市住房城乡建设局网站wordpress评论ip
  • wordpress新闻是哪个表常用的seo查询工具有哪些