{"id":335,"date":"2017-12-14T23:42:12","date_gmt":"2017-12-14T23:42:12","guid":{"rendered":"http:\/\/mrsdprojects.ri.cmu.edu\/2017teame\/?page_id=335"},"modified":"2017-12-15T20:33:07","modified_gmt":"2017-12-15T20:33:07","slug":"vehicle","status":"publish","type":"page","link":"https:\/\/mrsdprojects.ri.cmu.edu\/2017teame\/vehicle\/","title":{"rendered":"Vehicle"},"content":{"rendered":"<h2><span style=\"font-weight: 400\">Vehicle<\/span><\/h2>\n<p><span style=\"font-weight: 400\">Our vehicle subsystem for the is a miniature autonomous vehicle built by the D team last year<\/span><span style=\"font-weight: 400\">3<\/span><span style=\"font-weight: 400\">. \u00a0We have also outfitted the vehicle with a thin wire \u201cbumper\u201d to increase the scale in relation to humans. \u00a0The vehicle is built with a chassis from a hobby RC car and is controlled with an onboard Jetson TX1. \u00a0The TX1 connects to a Teensy microcontroller which commands the vector electronic speed controller (VESC) that controls the motors of the vehicle. \u00a0It also connects to a passive wireless receiver, Hokuyo LiDAR, USB hub, IMU, and power distribution board (PDB). \u00a0The PDB receives power from an 11.1V lithium polymer battery and distributes it between the active components. \u00a0The vehicle can be seen in <\/span><b>figure 1<\/b><span style=\"font-weight: 400\">\u00a0below.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-336\" src=\"http:\/\/mrsdprojects.ri.cmu.edu\/2017teame\/wp-content\/uploads\/sites\/26\/2017\/12\/vehicle.png\" alt=\"\" width=\"684\" height=\"122\" \/><\/p>\n<p><span style=\"font-weight: 400\">Figure 1 &#8211; Vehicle subsystem<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\">The ROS visualization tools provide an excellent view of how the car\u2019s subsystems work together to produce a working system. \u00a0The rqt_graph of the fully functional system can be seen in <\/span><b>figure 2<\/b><span style=\"font-weight: 400\">\u00a0below.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-337\" src=\"http:\/\/mrsdprojects.ri.cmu.edu\/2017teame\/wp-content\/uploads\/sites\/26\/2017\/12\/VehicleROS.png\" alt=\"\" width=\"1600\" height=\"461\" \/><\/p>\n<p><span style=\"font-weight: 400\">Figure 2 &#8211; vehicle rqt graph<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\">The bottom left of this rqt_graph shows how the IMU and laser scanner feed into an adaptive monte carlo localizer (amcl), then into a an extended Kalman filter to provide state estimation<\/span><span style=\"font-weight: 400\">4<\/span><span style=\"font-weight: 400\">. This information is published as odometry information which is used by both the trajectory server and trajectory client. The trajectory server sends commands through the multiplexer to the Ackermann controller, which controls the motor and steering. Left out of that description is the keyboard command, which feeds into the trajectory client. The command <\/span><i><span style=\"font-weight: 400\">a<\/span><\/i><span style=\"font-weight: 400\"> activates the ramp protocol, which moves the vehicle to user-defined goal point. Specifically, this references a yaml file (bsilqr_params.yaml) which has a predefined goal location (along with other parameters). This planning method is executed by the trajectory client and server, which utilize the ROS action library to steer the robot to the goal. \u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400\">Missing from the above graph is the connection to our infrastructure. \u00a0When working together, the trajectory client subscribes to the \u201c\/predicted_points\u201d topic which carries the PoseArray message that contains pedestrian trajectory data. \u00a0The trajectory client includes a node that will stop if this pedestrian data is determined to be in the vehicle\u2019s path. <\/span><\/p>\n<p><span style=\"font-weight: 400\">By connecting to a ROS core running on the vehicle\u2019s TX1, we are able to view the \u201codometry_filtered\u201d and \u201cscan\u201d (from the Hokuyo) topics on the vehicle\u2019s map. \u00a0Since the system came pre-built, we did not perform any modelling on the vehicle. \u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400\">The analysis came in a rigorous poring over of the ROS nodes when the vehicle was active to determine how the subsystems worked together. \u00a0Since our communication needed only to interface with the trajectory client, contained within the \u201cilqr_loco\u201d package, this package was the primary area of focus. \u00a0Toward the end of the semester, when we started interfacing with the infrastructure more regularly, the ekf used for state estimation was analyzed as well.<\/span><\/p>\n<p><span style=\"font-weight: 400\">We performed extensive testing on the vehicle in order to perform our fall validation experiment without failure. \u00a0What you can see in figure 3 below is the vehicle\u2019s odometry with respect its initial position (odom frame), the velodyne frame, and a human in its path. \u00a0<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-338\" src=\"http:\/\/mrsdprojects.ri.cmu.edu\/2017teame\/wp-content\/uploads\/sites\/26\/2017\/12\/vehiclerviz.png\" alt=\"\" width=\"774\" height=\"239\" \/><\/p>\n<p><span style=\"font-weight: 400\">Figure 3 &#8211; Vehicle running in rviz<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\">The ability to visualize the vehicle was useful for the many iterations we performed changing the map of our test environment, running the vehicle to its waypoint, and testing the vehicle with live pedestrians. \u00a0Primarily, this feature made it easy for us to determine where the vehicle believed it was with respect to the environment and the LiDAR.<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Vehicle Our vehicle subsystem for the is a miniature autonomous vehicle built by the D team last year3. \u00a0We have also outfitted the vehicle with a thin wire \u201cbumper\u201d to increase the scale in relation to humans. \u00a0The vehicle is built with a chassis from a hobby RC car and is controlled with an onboard<br \/><a class=\"moretag\" href=\"https:\/\/mrsdprojects.ri.cmu.edu\/2017teame\/vehicle\/\">+ Read More<\/a><\/p>\n","protected":false},"author":115,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-335","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/mrsdprojects.ri.cmu.edu\/2017teame\/wp-json\/wp\/v2\/pages\/335","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mrsdprojects.ri.cmu.edu\/2017teame\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/mrsdprojects.ri.cmu.edu\/2017teame\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/mrsdprojects.ri.cmu.edu\/2017teame\/wp-json\/wp\/v2\/users\/115"}],"replies":[{"embeddable":true,"href":"https:\/\/mrsdprojects.ri.cmu.edu\/2017teame\/wp-json\/wp\/v2\/comments?post=335"}],"version-history":[{"count":2,"href":"https:\/\/mrsdprojects.ri.cmu.edu\/2017teame\/wp-json\/wp\/v2\/pages\/335\/revisions"}],"predecessor-version":[{"id":374,"href":"https:\/\/mrsdprojects.ri.cmu.edu\/2017teame\/wp-json\/wp\/v2\/pages\/335\/revisions\/374"}],"wp:attachment":[{"href":"https:\/\/mrsdprojects.ri.cmu.edu\/2017teame\/wp-json\/wp\/v2\/media?parent=335"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}