当前位置: 首页 > 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.dnsts.com.cn/news/116555.html

相关文章:

  • 北京网站设计公司hlh成都柚米科技15山东手机网站建设报价
  • 优秀vi设计网站php和mysql网站毕业设计
  • 天津建设网官方网站wordpress mp4 插件下载
  • 专业建设网站的企业大型网站技术架构演进与性能优化
  • 网站建设 seo sem用什么开发和建设网站最好
  • 做防伪的网站运营是做什么的
  • 深圳网站优化提供商小企业网站建设怎么做好
  • 做网站有什么用山东住房和城乡建设厅网站登陆
  • 南雄网站建设网站开发主要工作内容
  • 保证量身定制的营销型网站网站做行测题
  • 做网站一般是怎么盈利宁波北仑做公司网站
  • 技术支持保定网站建设 定兴wordpress 翻页错误
  • 自己接单做网站公司装修方案
  • 网站编辑转行做文案高端网站开发找哪家好
  • 昌平网站开发公司电话wordpress固定链接404
  • 稳定的网络建站咨询电话网站抓取压力高
  • 国内外包网站深圳注册公司推荐
  • 手机营销型网站制作html网页制作完整代码
  • 网站怎么做搜狗排名网页设计与制作课程大纲
  • 一个网站收录很高 但外链很少是什么原因深圳品牌网站制作公司哪家好
  • 网站下载视频的方法泉州响应式网站建设
  • 怎么做一款贷款网站怎么在雅虎做网站收入
  • 宁波电信网站备案小游戏代码编程
  • 长沙网站定制开发建设比较好的网站空间
  • 跨平台网站开发东莞网站推广需要多少钱
  • 成都建设网站企业电话wordpress 路径标签
  • 学生个人网页制作html动态营销型企业网站优化
  • 深圳网站工作室wordpress查询分类为空
  • 昆明网站建设公司_营销方案有哪些
  • 网站建设ps模板衡水网站建设优化推广