Skip to main content

Posts

Showing posts from August, 2024

Featured Post

Simulation of URDF, Gazebo and Rviz | ROS Noetic Tutorial 8

Design a User-defined robot of your choice (or you can use the URDF file) and enable the LIDAR Scanner so that any obstacle placed on the path of the light scan will cut the light rays. Visualize the robot in the Gazebo workspace, and also show the demonstration in RViz.   (NB: Gain knowledge on wiring URDF file and .launch file for enabling any user-defined robot to get launched in the gazebo platform.) SLAM : One of the most popular applications of ROS is SLAM(Simultaneous Localization and Mapping). The objective of the SLAM in mobile robotics is to construct and update the map of an unexplored environment with the help of the available sensors attached to the robot which will be used for exploring. URDF: Unified Robotics Description Format, URDF, is an XML specification used in academia and industry to model multibody systems such as robotic manipulator arms for manufacturing assembly lines and animatronic robots for amusement parks. URDF is especially popular with users of the Robo

5G Network Simulation in NS3 using mmWave | NS3 Tutorial 2024

5G Network Simulation in NS3 Using mmWave This post shows the installation of ns3mmwave in Ubuntu 24.04 and simulates 5G networks in ns3. Installation of #5g networks in ns3 namely mmWave for #ns3 #TSP #pradeepkumar #pradeepkumarts Prerequisites: 1. Ubuntu OS (I used Ubuntu 24.04) 2. mmWave software from github To know the complete process, follow the video given below Open a new Terminal and try these commands $ sudo apt update $ sudo apt install g++ python3 cmake ninja-build git gir1.2-goocanvas-2.0 python3-gi python3-gi-cairo python3-pygraphviz gir1.2-gtk-3.0 ipython3 tcpdump wireshark libsqlite3-dev qtbase5-dev qtchooser qt5-qmake qtbase5-dev-tools openmpi-bin openmpi-common openmpi-doc libopenmpi-dev doxygen graphviz imagemagick python3-sphinx dia imagemagick texlive dvipng latexmk texlive-extra-utils texlive-latex-extra texlive-font-utils libeigen3-dev gsl-bin libgsl-dev libgslcblas0 libxml2 libxml2-dev libgtk-3-dev lxc-utils lxc-templates vtun uml-utilities ebtables bridg

Multiple Publishers and subscribers in ROS | ROS Noetic Tutorial 5

Multiple Publishers and subscribers in ROS Noetic   Already we have tried publisher subscriber in Python script and multiple sub/pub also we have tried.   Here is an experiment that does the following. 1. A packet publisher publishes the name of the packet (string format) 2. A security publisher (string) converts the above packet into an encrypted packet (usually the ceaser cipher, VITCC is equivalent to YLWFF). 3. A third publisher is an Int32 publisher, which publishes an integer number with the number of packets.   4. There is only one subscriber, that tells the "Number of packets encrypted" after all the publishers publishes.   i.e P1 AND P2 AND P3 => Subscribers SOURCE CODE:  Publisher1.py #!/usr/bin/env python3 import rospy from std_msgs.msg import String def talker(): rospy.init_node('publisher_node1', anonymous=True) pub = rospy.Publisher('P1', String, queue_size=10) rate = rospy.Rate(1)   while not rospy.is _shutdown(): _string = "ABCDEF"

ROS Turtlesim Mobility | ROS Noetic Tutorial 4

Mobility of Turtlesim in ROS1 Perform the TurtleSim simulation is ROS and make the circular movement and square movement of the turtle. SOURCE CODE:  rectangle_movement.py #!/usr/bin/env python3 import rospy from geometry_msgs.msg import Twist # This is one logic, where square and rectangle are drawn without changing the orientation of the turtle def square_movement():     pub = rospy.Publisher('/turtle1/cmd_vel', Twist, queue_size=10)     rospy.init_node('tsim_sqmove_driver', anonymous=True)     rate = rospy.Rate(1)     del_t = 0     direction = 0     while not rospy.is _shutdown():         robo_vel = Twist()         if del_t % 20:             if direction == 0:                 robo_vel.linear.y = 0                 robo_vel.linear.x = 1                 direction = 1             elif direction == 1:                 robo_vel.linear.y = 1                 robo_vel.linear.x = 0                 direction = 2             elif direction == 2:                 robo_vel.linear.y