鱼香ROS社区
    • 版块
    • 最新
    • 未解决
    • 已解决
    • 群组
    • 注册
    • 登录
    紧急通知:禁止一切关于政治&VPN翻墙等话题,发现相关帖子会立马删除封号
    提问前必看的发帖注意事项: 社区问答规则(小鱼个人)更新 | 高质量帖子发布指南

    Rviz2界面可以放大吗,字体好小

    已定时 已固定 已锁定 已移动
    ROS2机器人开发:从入门到实践
    ros2 rviz2 wsl2
    2
    5
    2.3k
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • S
      sxjj
      最后由 编辑

      5123eda8-b002-4f58-a9d5-fc8011c763ad-image.png 替代文字

      S 2 条回复 最后回复 回复 引用 0
      • S
        sxjj @sxjj
        最后由 编辑

        @sxjj 自己已摸索+ai解决
        参考https://blog.csdn.net/skysafari/article/details/131070710
        56fe8c4d-7f0d-4961-8ebd-7cf1c8d3825f-image.png
        77a6bc34-0f19-4d0c-b4c2-dc5cadb27641-image.png
        c39cc6fb-6371-43e8-bc77-3b89317d7b70-image.png

        1 条回复 最后回复 回复 引用 0
        • S
          sxjj @sxjj
          最后由 编辑

          @sxjj 如果有问题或者有什么不好的地方,请大佬指正,感谢😁

          1 条回复 最后回复 回复 引用 0
          • S
            sxjj
            最后由 编辑

            在看方法之前,我需要提醒,此方法需要下载VcXsrv,不难下,也很好操作,就是以后你要用rviz2等gui工具得先开VcXsrv。
            VcXsrv本质是为了能让windows用户也就是用wsl来操作Linux系统的图形界面应用程序,ros2中Gui是用Qt开发的,所以你用VcXsrv,以后那些gui工具就得在VcXsrv支持下(不知道对不对,也不知道是不是有解决方案)
            在这里只是对此问题提出一种可行方案(其实你可以用虚拟机学习,或者要长期与linux打交道直接去装双系统,用了wsl的便捷自然是要还债的,个人理解),如果有其他方案希望大佬指点一二,本人只是机械专业。

            为了让VcXsrv在关闭下也能运行rqt,rviz2等,我去问了ai,也修修改改,结果也没达到我的最终期望:让rqt等能在VcXsrv在关闭/开启下丝滑切换。
            现在底下这行代码的作用是,你不开VcXsrv也能运行rviz2等,但是字体的话就还是很小,如果你开启VcXsrv那么字体会变大(默认,我不知道字体好不好调,如果你直接改rviz字体大小可能会遇见花屏,不过也不用担心,改回来就行)。
            这里建议不要去,VcXsrv关闭打开rviz2,又打开VcXsrv,重新运行rviz2。是可以的,但是你每次切换VcXsrv或WSLg(也就是VcXsrv关闭)都要source ~/.bashrc!!!
            忙活了半天,我其实希望不用source ~/.bashrc也能丝滑切换,可惜ai代码总有些大大小小问题,解决了这个又那个😧 。但是想想也是,我纯找乐子了,谁会打开又关掉啊。

            function setup_display() {
            local ip=$(ip route show default | awk '{print $3}')

            if timeout 0.1 nc -z "$ip" 6000 2>/dev/null; then
                export DISPLAY="$ip:0"
                export GUI_MODE="vcxsrv"
                echo "✓ GUI 模式: VcXsrv ($DISPLAY)"
            elif [ -e "/mnt/wslg/.X11-unix/X0" ]; then
                export DISPLAY=:0
                export GUI_MODE="wslg"
                echo "✓ GUI 模式: WSLg"
            else
                export DISPLAY=:0  # 设置默认值,但可能无效
                export GUI_MODE="none"
                echo "⚠️  GUI 模式: 无显示服务器"
            fi
            

            }

            setup_display

            function gui() {
            local program="$1"
            shift

            # 如果当前模式是 none,尝试重新检测
            if [ "$GUI_MODE" = "none" ]; then
                setup_display
            fi
            
            if [ -n "$DISPLAY" ] && [ "$DISPLAY" != ":0" ] && [ "$GUI_MODE" != "none" ]; then
                echo "启动: $program (使用: $GUI_MODE)"
                command "$program" "$@"  # 不需要再设置 DISPLAY,环境已有
            else
                echo "错误: 无法启动 GUI 程序"
                echo "当前模式: $GUI_MODE, DISPLAY: ${DISPLAY:-未设置}"
                echo "请运行 'refresh_display' 或启动 VcXsrv"
                return 1
            fi
            

            }

            alias refresh_display='setup_display'

            粘在最后即可

            1 条回复 最后回复 回复 引用 0
            • L
              lightdong
              最后由 编辑

              def generate_launch_description():
              # 添加环境变量 然后rviz2的界面就变大了
              env_var = launch.actions.SetEnvironmentVariable(
              'QT_FONT_DPI',
              '196' # 这个值可以自己修改
              )
              """
              其他动作
              """

              # 返回值的类型也是固定的
              return launch.LaunchDescription([
                  # action动作
                  """
                  其他动作
                  """,
                  env_var 
              ])
              
              1 条回复 最后回复 回复 引用 0
              • 第一个帖子
                最后一个帖子
              皖ICP备16016415号-7
              Powered by NodeBB | 鱼香ROS